programing

xlwt를 사용하여 기존 통합 문서에 쓰기

nasanasas 2020. 12. 26. 15:30
반응형

xlwt를 사용하여 기존 통합 문서에 쓰기


xlwt를 사용하여 기존 파일에 쓰는 예를 찾을 수 없습니다. 작성해야하는 기존 xls 파일이 있습니다. xlrd를 사용하여 파일을 읽을 때 반환 된 "Book"유형을 xlwt.Workbook으로 변환하는 방법을 알아낼 수없는 것 같습니다. 누군가가 나를 예를 들어 줄 수 있다면 감사하겠습니다.


여기에 제가 최근에 사용한 샘플 코드가 있습니다.

통합 문서를 열고 행 아래로 이동하며 조건이 충족되면 행에 일부 데이터를 씁니다. 마지막으로 수정 된 파일을 저장합니다.

from xlutils.copy import copy # http://pypi.python.org/pypi/xlutils
from xlrd import open_workbook # http://pypi.python.org/pypi/xlrd
from xlwt import easyxf # http://pypi.python.org/pypi/xlwt

START_ROW = 297 # 0 based (subtract 1 from excel row number)
col_age_november = 1
col_summer1 = 2
col_fall1 = 3

rb = open_workbook(file_path,formatting_info=True)
r_sheet = rb.sheet_by_index(0) # read only copy to introspect the file
wb = copy(rb) # a writable copy (I can't read values out of this, only write to it)
w_sheet = wb.get_sheet(0) # the sheet to write to within the writable copy

for row_index in range(START_ROW, r_sheet.nrows):
    age_nov = r_sheet.cell(row_index, col_age_november).value
    if age_nov == 3:
        #If 3, then Combo I 3-4 year old  for both summer1 and fall1
        w_sheet.write(row_index, col_summer1, 'Combo I 3-4 year old')
        w_sheet.write(row_index, col_fall1, 'Combo I 3-4 year old')

wb.save(file_path + '.out' + os.path.splitext(file_path)[-1])

당신은 필요합니다 xlutils.copy. 다음과 같이 시도하십시오.

from xlutils.copy import copy
w = copy('book1.xls')
w.get_sheet(0).write(0,0,"foo")
w.save('book2.xls')

이 질문에 설명 된 대로 기본적으로 셀을 덮어 쓸 수 없습니다 .


코드 예제는 정확히 다음과 같습니다.

from xlutils.copy import copy
from xlrd import *
w = copy(open_workbook('book1.xls'))
w.get_sheet(0).write(0,0,"foo")
w.save('book2.xls')

테스트하려면 book1.xls를 만들어야하지만 아이디어를 얻을 수 있습니다.


나는 같은 문제가 있었다. 고객이 XLS (XLSX 아님) Excel 파일을 업데이트하는 Python 3.4 스크립트를 주문했습니다.

첫 번째 패키지 xlrd는 Python 홈에서 문제없이 "pip install"로 설치되었습니다.

두 번째 xlwt는 호환 되려면 "pip install xlwt-future"라고 말해야했습니다.

세 번째 xlutils는 Python 3을 지원하지 않지만 약간 조정했으며 이제 적어도 더미 스크립트에서 작동합니다.

#!C:\Python343\python
from xlutils.copy import copy # http://pypi.python.org/pypi/xlutils
from xlrd import open_workbook # http://pypi.python.org/pypi/xlrd
from xlwt import easyxf # http://pypi.python.org/pypi/xlwt

file_path = 'C:\Dev\Test_upd.xls'
rb = open_workbook('C:\Dev\Test.xls',formatting_info=True)
r_sheet = rb.sheet_by_index(0) # read only copy to introspect the file
wb = copy(rb) # a writable copy (I can't read values out of this, only write to it)
w_sheet = wb.get_sheet(0) # the sheet to write to within the writable copy
w_sheet.write(1, 1, 'Value')
wb.save(file_path)

여기에 파일을 첨부했습니다 : http://ifolder.su/43507580

만료 된 경우 alexander.samoylov@gmail.com에 편지를 보내십시오.

추신 : 일부 함수는 더미 예제에서 호출되지 않으므로 조정이 필요할 수도 있습니다. 누가하고 싶은지 Google 도움말을 사용하여 예외를 하나씩 수정하십시오. 패키지 코드가 작기 때문에 그리 어려운 작업은 아닙니다.


openpyxl

# -*- coding: utf-8 -*-
import openpyxl
file = 'sample.xlsx'
wb = openpyxl.load_workbook(filename=file)
# Seleciono la Hoja
ws = wb.get_sheet_by_name('Hoja1')
# Valores a Insertar
ws['A3'] = 42
ws['A4'] = 142
# Escribirmos en el Fichero
wb.save(file)

ReferenceURL : https://stackoverflow.com/questions/2725852/writing-to-existing-workbook-using-xlwt

반응형