source

xlrd 및 xlwt로 기존 Excel 워크북 및 시트 편집

ittop 2023. 4. 27. 22:46
반응형

xlrd 및 xlwt로 기존 Excel 워크북 및 시트 편집

다음에 대한 설명서에서xlrd그리고.xlwt저는 다음을 배웠습니다.

기존 워크북/시트에서 읽는 방법:

from xlrd import open_workbook
wb = open_workbook("ex.xls")
s = wb.sheet_by_index(0)
print s.cell(0,0).value
#Prints contents of cell at location a1 in the first sheet in the document called ex.xls

새 워크북/시트를 만드는 방법:

from xlwt import Workbook
wb = Workbook()
Sheet1 = wb.add_sheet('Sheet1')
Sheet1.write(0,0,'Hello')
wb.save('ex.xls')
#Creates a document called ex.xls with a worksheet called "Sheet1" and writes "Hello" to the cell located at a1

제가 지금 하고 싶은 것은 기존 워크북에서 기존 워크시트를 열고 해당 시트에 쓰는 것입니다.

저는 다음과 같은 것을 시도했습니다.

from xlwt import open_workbook
wb = open_workbook("ex.xls")
s = wb.sheet_by_index(0)
print s.cell(0,0).value

그렇지만open_workbook의 일부일 뿐입니다.xlrd모듈, 아님xlwt.

아이디어 있어요?

Edit1: 올리버스의 제안 후에 알아봤습니다.xlutils그리고 다음을 시도했습니다.

from xlrd import open_workbook
from xlwt import Workbook
from xlutils.copy import copy

wb = open_workbook("names.xls")
s = wb.get_sheet(0)
s.write(0,0,'A1')
wb.save('names.xls')

그러나 이 경우 다음 오류 메시지가 표시됩니다.

File "C:\Python27\lib\site-packages\xlrd\book.py", line 655, in get_sheet
raise XLRDError("Can't load sheets after releasing resources.")
xlrd.biffh.XLRDError: Can't load sheets after releasing resources.

편집 2: 오류 메시지는 부적절한 사용으로 인해 발생했습니다.get_sheet기능.드디어 사용 방법을 알게 되었습니다.

from xlrd import open_workbook
from xlwt import Workbook
from xlutils.copy import copy

rb = open_workbook("names.xls")
wb = copy(rb)

s = wb.get_sheet(0)
s.write(0,0,'A1')
wb.save('names.xls')

제가 op의 편집에서 썼듯이, 기존 엑셀 문서를 편집하려면, 당신은 다음을 사용해야 합니다.xlutils모듈(Thanks Oliver)

올바른 방법은 다음과 같습니다.

#xlrd, xlutils and xlwt modules need to be installed.  
#Can be done via pip install <module>
from xlrd import open_workbook
from xlutils.copy import copy

rb = open_workbook("names.xls")
wb = copy(rb)

s = wb.get_sheet(0)
s.write(0,0,'A1')
wb.save('names.xls')

이렇게 하면 "names.xls"의 첫 번째 시트에서 a1에 위치한 셀 내용이 "a1" 텍스트로 바뀐 다음 문서를 저장합니다.

다음은 위의 코드를 사용하는 다른 방법입니다.openpyxlxlsx와 호환되는 모듈입니다.제가 지금까지 본 바로는, 그것도 계속 포맷됩니다.

from openpyxl import load_workbook
wb = load_workbook('names.xlsx')
ws = wb['SheetName']
ws['A1'] = 'A1'
wb.save('names.xlsx')

언급URL : https://stackoverflow.com/questions/26957831/edit-existing-excel-workbooks-and-sheets-with-xlrd-and-xlwt

반응형