Python:以编程方式执行现有电子表格的公式计算

时间:2013-08-20 18:27:24

标签: python spreadsheet formula

我有一个非常复杂的电子表格工作簿 - 30张,每张表有多个表格,大量公式和大约8MB的文件大小。我想在一张纸上更改几个单元格的值,然后在另一张纸中获得单元格的结果值。

我用Google搜索一个方法来设置一个单元格的值并获取另一个单元格的值。例如,让我使用一个只有一张,一列和两行的超级简单工作簿。

Row1, Column1 (A1): 3       <--- This is a variable that will be supplied by a program.
Row2, Column1 (A2): =A1*2   <--- This is a cell from which I would like to get a calculated value with any value supplied to the A1 cell.

我能够使用xlrd打开工作簿并从A2单元格中获取初始值。但似乎xlrd没有让我更改单元格值的方法,因此我无法更改A1值。

我遵循writing to existing workbook using xlwt链接提供的指令,但xlutils.copy函数不复制公式。因此,当我向A1单元格提供新值时,A1单元格已更新为新值,但未对A2单元格进行计算。

我用谷歌搜索了两天没有运气。请帮忙。

如果python中没有方法,那么其他工具中的任何建议也将非常受欢迎。我首选的操作系统环境是Ubuntu。

感谢。

2 个答案:

答案 0 :(得分:0)

我知道你说你喜欢的环境是Ubuntu,所以我先前道歉这是一个与Excel相关的解决方案,但它可以帮助你解决困境。

我熟悉一个名为Data Nitro的便捷excel插件 - 我知道它专门用于将python与电子表格格式集成,在这种情况下是Excel。

他们有适度的文档,希望您可以发现这个库更好地支持电子表格的读/写。

他们提供了一些sample python scripts,这可能会让您更好地了解Data Nitro作为解决问题的方法的适用性。

答案 1 :(得分:0)

您可以尝试访问首选电子表格工具的API,并使用它来操作单元格并执行计算。既然你正在使用Ubuntu,我猜你可能有LibreOffice / OpenOffice。如果是这样,LibreOffice API允许您操纵电子表格单元格并调用LibreOffice Calc的功能 - 例如解析键入单元格的公式语法并计算结果。可以通过PyUNO模块从Python访问API。

以下是一些描述通过Python使用LibreOffice / OpenOffice的链接:

http://wiki.openoffice.org/wiki/Python

http://www.openoffice.org/udk/python/python-bridge.html

http://api.libreoffice.org/examples/examples.html#python_examples