Python Excel (xlrd, xlwt) - Как скопировать стиль из одной ячейки и поместить его в другую - PullRequest
7 голосов
/ 20 октября 2011

В частности, я пытаюсь открыть существующую книгу и записать в нее некоторые данные.

Однако, когда я пишу данные, это стирает границы этих ячеек.

Так что мне интересно, есть ли способ скопировать стиль этой ячейки перед записью в нее и затем повторно применить ее?

Я думаю, что могу быть на правильном пути с этим кодом?

from xlrd import open_workbook
from xlwt import easyxf
from xlutils.copy import copy
from xlutils.styles import Styles

rb=open_workbook('source.xls',formatting_info=True)
styles = Styles(rb)
rs=rb.sheet_by_index(0)
wb=copy(rb)
ws=wb.get_sheet(0)

for i,cell in enumerate(rs.col(2)):
    if not i:
      continue
    cell_style = styles[rs.cell(i,2)]
    ws.write(i,2,cell.value,cell_style)

wb.save('output.xls')

Но я получаю эту ошибку:

AttributeError: NamedStyle instance has no attribute 'font'

1 Ответ

3 голосов
/ 10 ноября 2011

Проблема здесь в том, что xlrd.NamedStyle очень отличается от xlwt.XFStyle.

Вопрос, кажется, дубликат Сохранение стилей с использованием Python xlrd, xlwt и xlutils.copy

...