2016-09-20 86 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'函数。谢谢。 –

相关问题