是否有任何方法可以使用Python保存公式编辑现有Excel文件?
我正在尝试编辑几个excel文件(.xls),而不更改工作表的其余部分。到目前为止,我发现唯一接近的是xlrd、xlwt和xlutils模块。问题在于,xlrd似乎在读取公式时计算公式,然后将答案作为单元格的值。有人知道保存公式的方法吗,这样我就可以使用xlwt写入文件而不会丢失它们?我在Python和CLISP方面有很多经验,但是如果他们有更好的支持,我可以很快学会另一种语言。谢谢你能给我的帮助 我以前使用过是否有任何方法可以使用Python保存公式编辑现有Excel文件?,python,excel,formula,xlwt,xlrd,Python,Excel,Formula,Xlwt,Xlrd,我正在尝试编辑几个excel文件(.xls),而不更改工作表的其余部分。到目前为止,我发现唯一接近的是xlrd、xlwt和xlutils模块。问题在于,xlrd似乎在读取公式时计算公式,然后将答案作为单元格的值。有人知道保存公式的方法吗,这样我就可以使用xlwt写入文件而不会丢失它们?我在Python和CLISP方面有很多经验,但是如果他们有更好的支持,我可以很快学会另一种语言。谢谢你能给我的帮助 我以前使用过xlwt.Formula函数,可以将超链接获取到单元格中。我想它也适用于其他公式 更新
xlwt.Formula
函数,可以将超链接获取到单元格中。我想它也适用于其他公式
更新:这是我在一个项目中找到的一个片段,我在其中使用了它:
link = xlwt.Formula('HYPERLINK("%s";"View Details")' % url)
sheet.write(row, col, link)
到目前为止,xlrd不读取公式。并不是它评估它们,它只是不读取它们
目前,最好的方法是通过pywin32或Visual Basic或VBScript(或其他一些具有COM接口的Microsoft友好语言)以编程方式控制Excel的运行实例。如果您不能运行Excel,那么您可以使用OpenOffice.org进行类似的操作。我们刚刚遇到了这个问题,最好是手动将公式重新编写为文本,然后在输出时将其转换为正确的公式 因此,打开Excel并将
=SUM(C5:L5)
替换为“=SUM(C5:L5)”
,包括引号。如果公式中有双引号,请将其替换为2个双引号,因为这将转义它,因此=“a”和“b”
将变为“=“a”和“b”
)
然后在Python代码中,循环源和输出表中的每个单元格,并执行以下操作:
output_sheet.write(row, col, xlwt.ExcelFormula.Formula(source_cell[1:-1]))
我们通常将源工作表复制为输出工作表,这样甚至可以保留样式,并避免覆盖上面手写的文本公式。我也有同样的问题。。。最终找到了下一个模块:
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)
==>执行此操作后,保存了我的文件,保留了之前插入的所有公式
希望这有帮助 你似乎没有回答这个问题。OP的问题是xlrd不读取公式。因此,他没有用xlwt写出的公式。是的,但我正在Mac上运行它。我还有OpenOfficeThis是一个解决方案,只要文件是
.xlsx
,或者可以转换成它。OpenPyXL将无法处理.xls
文件。