使用openpyxl保存后,xlsx文件扩展名无效,并保持vba=true。哪种方法最好?

2024-06-02 06:02:44 发布

您现在位置:Python中文网/ 问答频道 /正文

在这个环境中,我们有一个excel文件,它在一个工作表中包含rawdata,在另一个工作表中包含pivot表和图表。在

我需要每天使用python作业自动向原始数据追加行。 我不确定,但可能有一些VB脚本运行在前端,这将刷新数据透视表。在

我使用了openpyxl,通过遵循它的在线文档,我能够追加行并保存工作簿。在加载工作簿时,我使用keep_vba=true将vba模块保留在内部以启用旋转。但在保存工作簿后,xlsx不再使用msoffice打开,并表示格式或扩展名无效。我可以使用python查看数据,但是对于office,它不再工作了。如果我不使用keep-vba=true,那么数据透视就不起作用了,只存在前面的值(当然,据我所知,数据透视需要vba脚本)。在

你能解释一下发生了什么事吗?我是python新手,对它的概念了解不多。在

我如何在openpyxl中修复这个问题,或者除了openpyxl还有更好的替代方案吗。MS office中的数据连接不是我的选择。在

据我所知,xlsx可能需要特殊的模块来保存VB脚本,以与使用msoffice保存脚本的方式相同。如果是,那么保持_vba=true的目的是什么?在

如果你能详细解释一下,我将不胜感激。我很想知道。在

由于我完成这项任务的时间很短,所以我在这里寻找一个快速的答案,而不是通篇介绍所有的概念。在

谢谢你!在


Tags: 模块文件数据脚本true概念环境vba
1条回答
网友
1楼 · 发布于 2024-06-02 06:02:44

您必须以“.xlsm”而不是“.xlsx”扩展名保存文件。.xlsx格式的存在是为了向用户保证文件中没有VBA代码。这是一个Excel标准,而不是openpyxl的问题。尽管如此,我还没有使用openpyxl,所以我不确定您需要做些什么来确保您的文件正确地转换为.xlsm。在

编辑:对不起,第一次读错了你的问题。最简单的步骤是设置keep-vba=False。这可能会解决您的问题,因为您告诉openpyxl查找xlsx文件中不可能存在的VBA代码。在你发布代码的相关部分之前,很难说得更多。在

相关问题 更多 >