2016-09-20 93 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表:

enter image description here

我怎樣寫數據到excel與覆蓋其他事情 ?幫幫我。

回答

1

覆蓋是由於保存該文件與wb.save()和您的硬編碼的起始行號r = 2
1)如果您不在乎每次執行腳本的時間覆蓋行的,你可以使用這樣的:如果你關心

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)關於覆蓋行和列數(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.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

第一個完全符合我的要求。我錯過了'load_workbook'函數。謝謝。 –

相關問題