python - 如何使用 openpyxl 在 Excel 工作表中插入数组公式?

标签 python excel excel-formula openpyxl

我正在使用 OpenPyxl 创建和修改 Excel 工作表。
我在 Excel 中有以下公式:

=(SUM(IF(LEFT(Balances!$B$2:$B$100,LEN($B4))=$B4,Balances!$D$2:$D$100)))

这个公式是一个“数组公式”,但是为了手写它,我必须用 CTRL+SHIFT+ENTER 完成(因为它是一个数组公式)。
这个变换然后公式如下:
{=(SUM(IF(LEFT(Balances!$B$2:$B$100,LEN($B4))=$B4,Balances!$D$2:$D$100)))}

我希望能够使用以下代码通过 OpenPyxl 编写此公式:
    sheet.cell(row=j, column=i).value = '{=(SUM(IF(LEFT(Balances!$B$2:$B$100,LEN($B4))=$B4,Balances!$D$2:$D$100)))}'

但是,它不起作用。 OpenPyxl 无法管理它。它给了我写但不工作的公式。

我可以用 XLSX Writer
https://xlsxwriter.readthedocs.io/example_array_formula.html
但是 XLSX 编写器不适用于已创建的文件。

我看不到要走的路。

最佳答案

使用 worksheet.formula_attributes设置数组公式。将公式放在所需的单元格中,本例中为 A1。然后设置formula_attributes到要应用公式的单元格区域。

ws["A1"] = "=B4:B8"
ws.formula_attributes['A1'] = {'t': 'array', 'ref': "A1:A5"}

关于python - 如何使用 openpyxl 在 Excel 工作表中插入数组公式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57298554/

相关文章:

python - 在Python Tkinter : What option can I use to resize a window?

Excel VBA : Save As triggers Change event in ComboBox

excel - 检索当前本地计算机相对于 UTC 时间的小时数(使用 VBA)

vba - Excel VBA : Delete row if Column A contains a number within the string

excel - 根据众多标准将值相乘

python - 确定子字符串在 Python 中的字符串中出现的次数

python - 安装 python-pip 和 python-dev 时未满足的依赖项

python - 将 collections.Counter() 与具有负整数的 Django 查询集一起使用

excel - 仅当选项卡被标记为事件状态时才对多个选项卡求和

javascript - alasql导出的excel公式不起作用