2016-09-20 7 views
0

テキストファイルから文字列を読み込み、上書きせずにExcelシートに書き込もうとしています。私はExcelのシートを更新するために、openpyxlを使用しているところを見つけました。しかし、私のスクリプトはシート全体を上書きします。私は他のデータを同じにしたい。openpyxlはExcelシートを更新するのではなく、すべてのデータを上書きします

Pythonスクリプト:スクリプトの前に

from openpyxl import Workbook  
file_name="D:\\a.txt"  
content={}  
with open(file_name) as f: 
    for line in f: 
     (key,value)=line.split(":") 
     content[key]=value 

wb=Workbook() 
ws=wb.active 
    r = 2 
for item in content: 
    ws.cell(row=r, column=3).value = item 
    ws.cell(row=r, column=4).value = content[item] 
    r += 1 

wb.save("D:\\Reports.xlsx") 

Excelシート:スクリプトの後

enter image description here

Excelシート:

私はExcelにデータを書き込むにはどうすればよい

enter image description here

上書きする他のもの ?助けて。

答えて

1

上書きは、ファイルをwb.save()で保存し、ハードコードされた開始行番号r = 2の両方のために上書きされます。
1)あなたが行を上書きするの、あなたのスクリプトを実行するたびに気にしない場合は、このような使用することができますあなたが行と列番号(3 & 4の上書きを気にした場合

from openpyxl import Workbook 
from openpyxl import load_workbook 

path = 'P:\Desktop\\' 
file_name = "input.txt"  
content= {}  
with open(path + file_name) as f: 
    for line in f: 
     (key,value)=line.split(":") 
     content[key]=value 

wb = load_workbook(path + 'Reports.xlsx') 
ws = wb.active 

r = 2 
for item in content: 
    ws.cell(row=r, column=3).value = item 
    ws.cell(row=r, column=4).value = content[item] 
    r += 1 

wb.save(path + "Reports.xlsx") 

2) )あなたはこのような何かを試すことができます:

from openpyxl import Workbook 
from openpyxl import load_workbook 

path = 'P:\Desktop\\' 
file_name = "input.txt"  
content= []  
with open(path + file_name) as f: 
    for line in f: 
     key, value = line.split(":") 
     content.append(['','', key, value]) # adding empty cells in col 1 + 2 

wb = load_workbook(path + 'Reports.xlsx') 
ws = wb.active 

for row in content: 
    ws.append(row) 

wb.save(path + "Reports.xlsx") 
+0

最初の1つは私の要件のために完全に動作します。私は 'load_workbook'関数が欠けていました。ありがとう。 –

関連する問題