0

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

4

4 回答 4

9

我遇到了同样的问题......最终找到了下一个模块:

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)

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

希望这可以帮助!

于 2014-03-25T15:23:21.170 回答
1

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

目前,最好的办法是通过 pywin32 或 Visual Basic 或 VBScript(或其他一些具有 COM 接口的 Microsoft 友好语言)以编程方式控制 Excel 的运行实例。如果您不能运行 Excel,那么您可以使用 OpenOffice.org 来做类似的事情。

于 2011-10-05T21:20:18.583 回答
1

我们刚刚遇到了这个问题,我们能做的最好的事情就是手动将公式重写为文本,然后在输出时将它们转换为正确的公式。

所以打开 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]))

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

于 2012-08-22T15:14:17.300 回答
1

我之前使用过该xlwt.Formula功能,以便能够将超链接放入单元格中。我想它也适用于其他公式。

更新:这是我在一个项目中找到的一个片段:

link = xlwt.Formula('HYPERLINK("%s";"View Details")' % url)
sheet.write(row, col, link)
于 2011-10-05T17:57:19.967 回答