2017-07-31 27 views
-1

テキストファイルからExcelファイルにデータをコピーする必要がありますが、古いデータは上書きされません。openpyxlで古いコンテンツを上書きせずにExcelファイルに書き込む

私のコード:

import os,sys 
from openpyxl import Workbook 
from openpyxl.compat import range 

wb = Workbook() 
Excelfilename = 'LogErrors.xlsx' 
ws1 = wb.active 
ws1.title = "Historique" 
excelData = [] 
try: 
    with open('out.txt') as f: 
     for line in f: 
      excelData.append([word for word in line.split("\t") if word]) 
    for lines in range(1,len(excelData)): 
     for columns in range(1,len(excelData[lines])): 
      ws1.cell(column=columns, row=lines, value=excelData[lines][columns-1]) 
    wb.save(filename = Excelfilename) 
except Exception, e: 
    print e.message 

答えて

2

既存のExcelファイルをロードしていません。毎回新しいものを作成しています。私が提案するもう1つの変更は、アクティブなシートのデータを上書きするため、アクティブなシートの名前を変更する代わりに、新しいシートを作成することです。以下は、スクリプトを実行するたびにファイルからテキストを読み取り、新しいシートに書き込むコードです。私は変更を強調表示するためにいくつかのコメントを追加しました:

import os,sys 
from openpyxl import load_workbook 
from openpyxl.compat import range 

Excelfilename = 'LogErrors.xlsx' 
# Open existing file with load_workbook 
wb = load_workbook(Excelfilename) 
# Create a new sheet instead of renaming active 
ws = wb.create_sheet('Historique') 
# You can rename the active if that was intent 
excelData = [] 
try: 
    with open('out.txt') as f: 
     for line in f: 
      excelData.append([word for word in line.split("\t") if word]) 
    # Indices for array start at 0 
    for lines in range(0,len(excelData)): 
     # Indices for array start at 0 
     for columns in range(0,len(excelData[lines])): 
      # Column and row indices start at 1 
      ws.cell(column=columns+1, row=lines+1, value=excelData[lines][columns-1]) 
    wb.save(filename = Excelfilename) 
except Exception, e: # Don't catch everything, catch what you expect 
    print e.message 
関連する問題