我制作了一个脚本,该脚本打开一个.xls文件,在其中写入一些新值,然后保存该文件。
后来,脚本再次将其打开,并希望在某些包含公式的单元格中找到答案。
如果我用openpyxl调用该单元格,则会得到公式(即:)"=A1*B1"
。如果激活data_only
,我什么也没得到。
有没有办法让Python计算.xls文件?(或者我应该尝试PyXll吗?)
实际上,有一个使用Excel公式并使用Python对其求值的项目: Pycel。
Pycel使用Excel本身(通过COM)提取公式,因此在您的情况下,您将跳过该部分。
该项目可能有一些有用的东西可供您使用,但是我不能保证它的成熟度或完整性。
它并不是真正为普通大众开发的。
还有一个名为Koala的较新项目,该项目基于Pycel和OpenPyXL。
如果您不能使用Excel,但 可以
自己计算公式的结果(在Python代码中),另一种方法是将值和公式都写入一个单元格中(这样,当您读取文件时,可以只需拉出该值,根本不用担心公式)。在撰写本文时,我还没有在OpenPyXL中找到一种方法来做到这一点,但是XlsxWriter可以做到。从文档中:
XlsxWriter不会计算公式的值,而是将值0存储为公式结果。然后,它在XLSX文件中设置一个全局标志,说打开该文件时应重新计算所有公式和函数。这是Excel文档中建议的方法,并且通常可以与电子表格应用程序很好地配合使用。但是,不具备计算公式功能的应用程序(例如Excel
Viewer)或某些移动应用程序将仅显示0结果。如果需要,还可以使用options值参数来指定公式的计算结果。当使用不计算公式值的非Excel应用程序时,这有时是必要的。计算出的值将添加到参数列表的末尾:
worksheet.write_formula(’A1’,’= 2 + 2’,num_format,4)
通过这种方法,当需要读取值时,可以使用OpenPyXL的data_only
选项。(对于其他人,阅读此答案:如果您使用xlrd,则无论如何都只能使用该值。)
最后,如果您 确实
有Excel,那么您可能要做的最直接,最可靠的事情就是自动在Excel中打开和重新保存文件(以便它可以为您计算和编写公式的值)。xlwings是从Windows或Mac上执行此操作的简便方法。
这里是VBA新手。 谢谢你的教育!
问题内容: 我希望能够使用Python读取Excel文件,在读取完成后保持Python脚本运行,并执行其他操作,同时能够在另一个进程中编辑Excel文件。我正在使用python 2.7和openpyxl。 当前看起来像: 运行函数后,即使我不想再使用Python读取Excel文件,它仍然被锁定以供其他进程访问(它给出错误“当前正在使用’‘文件名’。请稍后再试”。) 如何从脚本关闭文件?我尝试了OE
我有以下XML文件: 按以下顺序排列: 或 但这些尝试都行不通。是不是少了什么?(下面是我用来计算SHA-1摘要的C#方法: 源文件在这里:https://1fichier.com/?y9spk6g2zk 包含缩进的源文件:https://1fichier.com/?11r0i8izzt 我试图获得以下摘要:EuerOS8DACSBE3XQXBY5T+M07AI=
我有一个由几张纸组成的excel文件。我需要分别将它们作为单独的数据帧加载。与pd类似的功能是什么。对于此类任务,请阅读“\u csv”(“”)? 附注:由于大小,我不能在excel中复制和粘贴单独的工作表
问题内容: 我正在将一些数据写入Excel文件,但是我不知道如何调整代码以便能够控制要写入的工作表: 而不是,我该怎么说(这是VBA语法的样子……)? 问题答案: 你应该用 PS:您应该检查工作表中是否包含工作表名称
但是我在系统上有另一个会话(相同的项目并且似乎是相同的条件),无论我测试什么,都不可能打开这个工具窗口。我可以调试、设置断点并通过“快速评估”查看值,但评估表达式窗口无法打开。 在这一点上,我不提供更多的项目信息,因为我不认为这会有什么不同。。。 我首先尝试了另一个空项目,我有同样的行为,所以这可能是macos的问题,我不知道。我还尝试在第二个会话中重新安装IDE,但它也会这样做。 在我做了一些不
主要内容:VB.Net创建一个Excel文件的应用程序VB.Net支持Microsoft Excel 2010的COM对象模型和应用程序之间的互操作性。 要应用程序中使用这种互操作性,需要在Windows窗体应用程序中导入名称空间。 VB.Net创建一个Excel文件的应用程序 让我们开始创建一个窗体窗体应用程序按照以下步骤在Microsoft Visual Studio中:文件 -> 新建项目 -> Windows窗体应用程序。 最后,选择确定,M
问题内容: 我想使用jdbc或其他方法连接到Excel工作表,但我不想使用管理工具为同一目录指定DSN。他们有某种方式使用代码吗?如果是,怎么办? 提前致谢 问题答案: 也可以不使用DSN而连接到电子表格,这在代码内提供了一种更灵活的方式来将JDBC指向感兴趣的Excel文件,而无需访问客户端注册表来定义所需的DSN。如果没有DSN,则将按以下方式创建数据库连接,请不要与构造的JDBC URL有所