0

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

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

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 值。

我按照 使用 xlwt 链接写入现有工作簿提供的说明进行操作,但 xlutils.copy 函数不会复制公式。因此,当我向 A1 单元格提供新值时,A1 单元格已更新为新值,但未对 A2 单元格进行计算。

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

如果python中没有对此的方法,其他工具中的任何建议也将不胜感激。我首选的操作系统环境是 Ubuntu。

谢谢。

4

2 回答 2

0

我知道您说过您的首选环境是 Ubuntu,因此我为这是一个与 Excel 相关的解决方案,但它可能会帮助您解决困境,因此我提前道歉。

我对一个名为Data Nitro的方便的 excel 插件有点熟悉——我知道它专门用于将 python 与电子表格格式(在本例中为 Excel)集成。

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

他们提供了一些示例 python 脚本,可以让您更好地了解 Data Nitro 作为您的问题的解决方案的适用性。

于 2013-08-20T19:08:09.190 回答
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

于 2013-08-22T16:27:53.870 回答