pythonでエクセル、テキストを読み込みhtmlに書き出すスクリプト

pythonでエクセル、テキストを読み込みhtmlに書きだしたい時があると思います。

その時の方法を、自分用に作成しました。

目次

pythonでエクセル、テキストを読み込みhtmlに書き出すスクリプト

import openpyxl as px
import os
###################読み込むエクセルファイルパス
wb = px.load_workbook(r'D:\DATA\pythonG_host_ip_syutoku\host_ip.xlsx')
###################読み込むテキストファイルパス
contents_file = r'D:\DATA\pythonG_host_ip_syutoku\contests.txt'
###################書き込むテキストファイルパス
contents_file_w = r'D:\DATA\pythonG_host_ip_syutoku\contests_w.txt'
#waku_file = r'D:\DATA\pythonG_host_ip_syutoku\waku.html'
###################読み込むヘッダーテキストファイルパス
waku_headfile = r'D:\DATA\pythonG_host_ip_syutoku\waku_head.txt'
###################読み込むフッターテキストファイルパス
waku_footfile = r'D:\DATA\pythonG_host_ip_syutoku\waku_foot.txt'
###################シートの初期値
page_number = 0
###################シートを読み込みリストへ変換する
sheets = wb.sheetnames
###################シートの総数を求め、繰り返し回数を決定する
sheets_suu = len(sheets)-1
###################現ページNOとシートの総数を比較する-シートの数だけ繰り返す
while page_number <= sheets_suu:
    #現ページNOから現ページの名前を調べる
    page = sheets[page_number]
    #書き込むファイルの指定、シートにより分ける場合
    waku_file_w = r'D:\DATA\pythonG_host_ip_syutoku\comp\waku_w-'+page+'.html'
    #現ページの名前から現ページをアクティブにする
    wb.active = wb.sheetnames.index(page)
    ws = wb.active
    ############初期にセルを指定する2##番号で############
    row = 4
    column = 2
############コンテンツ作成関数############
    def func1(host,row,column):
        ############初期のセルを読み込み############
        #host = ws.cell(row,column).value
        ############セルが空白の時は関数を抜ける###########
        if not host:
            exit
        else:
            ############セルの値がAP出なければくり返す###########   
          while False == host.startswith('AP'):
            #host = ws.cell(row,column).value
            ip = ws.cell(row,column+1).value
            ############ファイルに書き込み###########
            with open(contents_file,'r') as contents:
                filetext = contents.read()
                ############元ファイルの値を変換###########
                after_text = filetext.replace('host_input',host).replace('ip_input',ip)
                ############コンテンツの中身を追記していく###########
                with open(contents_file_w,'a') as contents_w:
                    contents_w.write(after_text)
                
                ############////ファイルに書き込み###########
            row +=1
            ############APの最初が入ってしまうのでもう一回判定###########
            host = ws.cell(row,column).value
            if 'AP' in host:
                break       
    host = ws.cell(row,column).value
    ############hostがあれば関数呼び出し###########
    while host:
        host = ws.cell(row,column).value 
        func1(host,row,column)
        column +=3
    
    with open(waku_headfile,'r') as waku_head_r:
        headtext = waku_head_r.read()
        with open(waku_footfile,'r') as waku_foot_r:
            foottext = waku_foot_r.read()
            with open(contents_file_w,'r') as contents_file_all:
                contenstext = contents_file_all.read()
                with open(waku_file_w,'w') as waku_w:
                    waku_w.write(headtext)
                    waku_w.write(contenstext)
                    waku_w.write(foottext)
    ############書き込み終わったのでコンテンツファイル削除###########                
    os.remove(contents_file_w)
    ############次のシートへ###########  
    page_number +=1

同じフォルダに入れるファイル

  • waku.html (入れたい部分)
  • waku_head.txt (入れたい部分から上の部分)
  • waku_foot.txt (入れたい部分から下の部分)

変更する箇所

  • ファイルのパス全般
  • エクセルの初めに参照するセルの位置をrowとcolumnの数字に入力する
  • エクセルの列の間の数字を入力する column +=3 の数字を編集する
  • waku.htmlとpythonファイルの入れ込みたい部分
  • row +=1を止めるトリガーの部分2か所(今回でいう「AP」が含まれていなければ、「AP」が含まれていればbreak)

見にくいのでコピーして何かテキストか何かに張り付けてみてね。。。

python使用時の注意点

またこれを作成している時にはまったというかpythonが動かなかったりもしたので、そのリンクも張っておきます。

pythonが動かなかった理由はパスにあった話

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
目次
閉じる