В документации для 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')