Шаблон Python Excel для чтения и перезаписи с сохранением формул и форматирования

Я просмотрел всю гамму и не могу найти то, что ищу. Все темы, которые я нашел здесь, заканчиваются для меня тупиком. xlrd, xlwt и xlutils почти делают то, что мне нужно, но… Основная идея заключается в том, что мне нужно использовать Python для записи простых данных (строк) на определенный лист шаблона Excel и записи этого шаблона в новый файл .xls. .

Чтение шаблона, копирование его в новый объект рабочей книги, запись новых значений и запись нового файла .xls не представляет проблемы. Однако я не могу найти модуль Python Excel, который поддерживает и формулы, и форматирование.

`

our = 'template.xls'

# open up read-only template with formatting maintained
rb = open_workbook(our,formatting_info=True)
r_sheet = rb.sheet_by_index(4)

# copy this to a new workbook object
wb = copy(rb)

# 5th sheet (index = 4) is where we need to drop the data we have
w_sheet = wb.get_sheet(4)

# populate with new data!
for row_index in range(0, r_sheet.nrows):
    w_sheet.write(row_index, 1, "some string that is our data")

# write it!
wb.save('new.xls')

`

При чтении в шаблоне форматирование сохраняется (слегка изменено для некоторых цветов; ах!), но формулы - нет, поэтому "new.xls" имеет пробелы везде, где когда-то стояли формулы.

Любая идея, как поддерживать форматирование как, так и формулы?

Обратите внимание, я привязан к Python 2.7.


person user2141817    schedule 29.01.2015    source источник


Ответы (1)


Для этого можно использовать openpyxl — он поддерживает только xlsx (и родственные форматы), а не xls (старый формат Excel).

https://pypi.python.org/pypi/openpyxl/

http://openpyxl.readthedocs.org/en/latest/

https://bitbucket.org/openpyxl/openpyxl/src/2.2/doc/source/index.rst

Этот пакет сохраняет формулы при открытии/сохранении листа Excel. Также он сохраняет форматирование, но с ним есть небольшие проблемы. Однако изображения из исходного файла Excel не сохраняются.

Другие интересные функции включают поддержку условного форматирования, диаграмм, спарклайнов и многое другое.

person Boris Chervenkov    schedule 14.07.2015
comment
Я, должно быть, где-то читал об этом, и, поскольку я использую другие функции в своем проекте, я, должно быть, предположил, что спарклайны тоже поддерживаются. - person Boris Chervenkov; 29.11.2015