Ale*_*ana 5 python excel excel-formula openpyxl
我正在使用 OpenPyxl 创建和修改 Excel 工作表。我在 Excel 中有以下公式:
=(SUM(IF(LEFT(Balances!$B$2:$B$100,LEN($B4))=$B4,Balances!$D$2:$D$100)))
Run Code Online (Sandbox Code Playgroud)
这个公式是一个“数组公式”,它正在工作,但为了手工编写它,我必须用 CTRL+SHIFT+ENTER 完成(因为它是一个数组公式)。这个变换则公式如下:
{=(SUM(IF(LEFT(Balances!$B$2:$B$100,LEN($B4))=$B4,Balances!$D$2:$D$100)))}
Run Code Online (Sandbox Code Playgroud)
我希望能够通过 OpenPyxl 使用以下代码编写此公式:
sheet.cell(row=j, column=i).value = '{=(SUM(IF(LEFT(Balances!$B$2:$B$100,LEN($B4))=$B4,Balances!$D$2:$D$100)))}'
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用。OpenPyxl 无法管理它。它给了我写好的公式,但不起作用。
我可以使用 XLSX Writer https://xlsxwriter.readthedocs.io/example_array_formula.html来做到这一点
但是 XLSX writer 不适用于已创建的文件。
我不知道该走哪条路。
使用worksheet.formula_attributes来设置数组公式。将公式放入所需的单元格中,本例中为 A1。然后将 设为formula_attributes要应用公式的单元格区域。
ws["A1"] = "=B4:B8"
ws.formula_attributes['A1'] = {'t': 'array', 'ref': "A1:A5"}
Run Code Online (Sandbox Code Playgroud)