是否有任何方法可以使用Python保存公式编辑现有Excel文件?

是否有任何方法可以使用Python保存公式编辑现有Excel文件?,python,excel,formula,xlwt,xlrd,Python,Excel,Formula,Xlwt,Xlrd,我正在尝试编辑几个excel文件(.xls),而不更改工作表的其余部分。到目前为止,我发现唯一接近的是xlrd、xlwt和xlutils模块。问题在于,xlrd似乎在读取公式时计算公式,然后将答案作为单元格的值。有人知道保存公式的方法吗,这样我就可以使用xlwt写入文件而不会丢失它们?我在Python和CLISP方面有很多经验,但是如果他们有更好的支持,我可以很快学会另一种语言。谢谢你能给我的帮助 我以前使用过xlwt.Formula函数,可以将超链接获取到单元格中。我想它也适用于其他公式 更新

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

我以前使用过
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
文件。