Найти - Пользователи
Полная версия: xlwt сохранение стилей при копировании и записи
Начало » Python для экспертов » xlwt сохранение стилей при копировании и записи
1
svas
Пытаюсь добавить колонку в существующий файл 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)
При записи в ячейку, стиль который был там до записи (шрифт, заливка) стираются. Как сделать чтобы записать значение, а стиль остался каким был?
pyuser
наверное самый простой вариант - это посмотреть на код функции copy :)

У функции write есть параметр style, который задает стиль ячейки, Вам нужно просто передавать его в функцию.
Где его взять - тут несколько сложнее. книга (xlrd) имеет свойство xf_list - список стилей. Рабочий лист имеет функцию cell_xf_index(row, col), которая возвращает индекс стиля ячейки в списке xf_list, вот пожалуй и все :)
svas
Спасибо
Взял рецепт здесь http://groups.google.com.au/group/python-excel/browse_thread/thread/1fa35f8ffe74916
unax
Товарищи, а подскажите такое дело.
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)
В примере по ссылке выше некая функция get_xlwt_style_list из getxlwtstylelist
что вот в ней интересно..
unax
Раскурил. Вот тут можно посмотреть на начинку функции http://code.google.com/p/some-code-sheets/wiki/python_excel
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB