Форум сайта python.su
Пытаюсь добавить колонку в существующий файл excel
from xlrd import open_workbook
from xlutils.copy import copy
rbook = open_workbook('reestr.xls', formatting_info = True)
rsheet = rbook.sheet_by_index(2)
wbook = copy(rbook)
wsheet = wbook.get_sheet(2)
for i in range(8,rsheet.nrows):
wsheet.write(i, 18, i)
Офлайн
наверное самый простой вариант - это посмотреть на код функции copy :)
У функции write есть параметр style, который задает стиль ячейки, Вам нужно просто передавать его в функцию.
Где его взять - тут несколько сложнее. книга (xlrd) имеет свойство xf_list - список стилей. Рабочий лист имеет функцию cell_xf_index(row, col), которая возвращает индекс стиля ячейки в списке xf_list, вот пожалуй и все :)
Офлайн
Спасибо
Взял рецепт здесь http://groups.google.com.au/group/python-excel/browse_thread/thread/1fa35f8ffe74916
Офлайн
Товарищи, а подскажите такое дело.
xf_list содержит объекты типа xlrd.formatting.XF
а при записи ячеек write(self, r, c, label=“”, style=Style.default_style) стиль задается через тип XFStyle.
Что то не могу понять какие отношения между классами XF и XFStyle?
А то просто же не получается скопировать стиль ячейки типа..(кусок кода для ясности)
self.__out_document = xlrd.open_workbook(doc_file_path , on_demand=True , formatting_info=True )
...........
wd=copy(self.__out_document)
for var in self.__variables:
if var.exist:
locate=var.positions
for pos in locate:
sheet=wd.get_sheet(pos['z'])
sheet_source= self.__out_document.sheet_by_index(pos['z'])
st = self.__out_document.xf_list[ sheet_source.cell_xf_index(pos['x'],pos['y']) ] <---- из документа источника "источник стиля"
if sheet and st:
sheet.write(pos['x'],pos['y'], var.value.decode("utf-8"), st)
Офлайн
Раскурил. Вот тут можно посмотреть на начинку функции http://code.google.com/p/some-code-sheets/wiki/python_excel
Офлайн