0

我正在使用 openpyxl 创建包含一些自定义 Excel 公式的工作表。其中一个自定义 Excel 公式返回一个数组,但我不提前知道数组的大小(即行数或列数)。

假设这是自定义 Excel 公式:

=GETVALUES(<some input>)

如果我在 Excel 365 中使用此公式,则数组将根据需要根据 的返回维度动态调整大小GETVALUES。但是,如果我在 openpyxl 中设置公式(例如ws["A1"].value = '=_xldudf_GETVALUES(<some input>)'),然后在 Excel 365 中打开此工作簿,我会在等号后得到一个 @ 符号。

我看到这篇文章建议将formula_attributes:t字段设置为单元格范围array,并将ref字段设置为单元格范围。由于我不知道返回数组的大小,我想我不知道为该ref字段设置什么。

有没有办法在 openpyxl 中设置公式(不知道返回数组的大小),以便 Excel 365 动态显示整个数组?如果没有,是否有另一个用于 Python 的 Excel API 能够处理这个问题?

4

1 回答 1

0

我有类似的问题,我仍在寻找一个好的解决方案。

我找到的临时解决方案是在python中将公式写错,然后在excel中使用find and replace来修复公式。

所以如果你想把“=getvalues(text)”放到一个单元格中

“=keyword123(文本)”代替。

然后打开excel文件,按Ctrl-h打开“查找和替换”窗口。

代替

关键字123

获取值

如果您仍然有@ 符号,请查找并将@ 替换为空。默认情况下,查找和替换当前活动工作表上的作品。您可以按选项将搜索扩展到整个工作簿。重要的是要确保“keyword123”是在 excel 文件的其他任何地方都找不到的值。

显然,如果您要生成多个文件,这不是很有效,但如果所有内容都在一个工作簿中,则效果很好。

于 2021-10-16T01:17:38.080 回答