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

时间:2015-01-29 19:32:16

标签: 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')

`

当在模板中阅读时,格式保持不变(对于某些颜色略有改变; meh!),但公式不是,所以“new.xls”在公式曾经存在的地方都有空白。

知道如何维护两种格式和公式吗?

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

1 个答案:

答案 0 :(得分: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文件中的图像。

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