2016-09-20 5 views
0

텍스트 파일에서 문자열을 읽고 덮어 쓰지 않고 Excel 시트에 쓰려고합니다. 엑셀 시트를 업데이트하는 어딘가에서, openpyxl이 사용되는 것을 발견했습니다. 하지만 제 스크립트는 전체 시트를 덮어 씁니다. 나는 다른 데이터가 같기를 원한다.openpyxl이 엑셀 시트를 업데이트하는 대신 모든 데이터를 덮어 씁니다.

파이썬 스크립트 :

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") 

엑셀 시트 스크립트 전에 :

enter image description here

스크립트 후

엑셀 시트 :

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' 함수를 놓쳤다. 감사. –

관련 문제