有没有办法使用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)
截至目前,xlrd不会读取公式。 这不是评估它们,它不会读取它们。
现在,最好的办法是以编程方式控制一个运行的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]))
我们使用这个答案来复制源表格作为输出表格,甚至保留样式,避免覆盖上面的手写文本公式。