有没有办法使用Python保留公式编辑现有的Excel文件?

我正在尝试编辑几个excel文件(.xls)而不更改工作表的其余部分。 到目前为止我唯一发现的就是xlrd,xlwt和xlutils模块。 这些问题似乎是xlrd在读取时计算公式,然后将答案作为单元格的值。 有谁知道保存公式的方法,以便我可以使用xlwt写入文件而不会丢失它们? 我在Python和CLISP方面拥有大部分的经验,但如果他们有更好的支持,他可以很快地select另一种语言。 谢谢你提供的所有帮助!

我有同样的问题…最终发现下一个模块:

from openpyxl import load_workbook def Write_Workbook(): wb = load_workbook(path) ws = wb.get_sheet_by_name("Sheet_name") c = ws.cell(row = 2, column = 1) c.value = Some_value wb.save(path) 

==>这样做,我的文件得到保存,保存之前插入的所有公式。

希望这可以帮助!

我以前使用过xlwt.Formula函数可以将超链接放入单元格中。 我想它也会与其他公式一起工作。

更新:这是我在我使用它的项目中find的一个片段:

 link = xlwt.Formula('HYPERLINK("%s";"View Details")' % url) sheet.write(row, col, link) 

截至目前,xl​​rd不会读取公式。 这不是评估它们,它不会读取它们。

现在,最好的办法是以编程方式控制一个运行的Excel实例,通过pywin32或者Visual Basic或者VBScript(或者其他一些有COM接口的Microsoft友好型语言)。 如果你不能运行Excel,那么你也许可以做一些类似于OpenOffice.org的事情。

我们刚刚遇到了这个问题,我们可以做的最好的办法是手动将公式写为文本,然后将它们转换为适当的输出公式。

因此,打开Excel并用"=SUM(C5:L5)" 包括引号 "=SUM(C5:L5)"replace=SUM(C5:L5) 。 如果你的公式中有一个双引号,用2个双引号replace它,因为这会将其转义,所以= "a" & "b"变成"= ""a"" & ""b"" "

然后在你的Python代码中,遍历源表格和输出表格中的每个单元格,然后执行:

 output_sheet.write(row, col, xlwt.ExcelFormula.Formula(source_cell[1:-1])) 

我们使用这个答案来复制源表格作为输出表格,甚至保留样式,避免覆盖上面的手写文本公式。