Python Excel模板读取和重写,维护公式和格式

use*_*817 5 python excel xlrd xlwt xlutils

我已经运行了全部范围,似乎无法找到我正在寻找的东西.我在这里找到的所有主题对我来说都是死路一条.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')
Run Code Online (Sandbox Code Playgroud)

`

在模板中读取时,格式保持不变(对于某些颜色略有改变; meh!),但公式不是,因此"new.xls"在公式曾经存在的地方都有空白.

任何想法如何保持两者的格式和公式?

注意,我已经锁定了Python 2.7.

Bor*_*kov 6

您可以使用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文件中的图像.

其他很酷的功能包括支持条件格式,图表,迷你图等等.