【问题标题】:Excel adding @ signs in Openpyxl generated workbooksExcel在Openpyxl生成的工作簿中添加@符号
【发布时间】:2020-11-13 20:02:19
【问题描述】:

我目前正在尝试编写一个 python 脚本来从一个 json 文件生成一个 excel 工作簿模板文件。为此,我一直在使用 openpyxl 并在模板中实现 excel 函数以便于访问。我不精通excel,我使用python作为“学习的催化剂”。当我打开生成的文件时,我发现我输入的函数在某些地方有“@”符号。

在 python 中

from openpyxl import Workbook
wb = Workbook()
sh = wb.active
sh["A2"] = "=IF(ISERR(VLOOKUP(F1,A1:B21,2,FALSE)),”False:Not Contains”,”True: Text Found”)"

(excel 函数来自:https://excelx.com/formula/if-cell-contains-text/#bm4

在 Excel 中
=@IF(ISERR(VLOOKUP(F1,A1:B21,2,FALSE)),”False:(Not) Contains”,”True: Text Found”)

我相信这是在 excel 方面,因为当我在 python 中打印单元格时,我会得到与输入相同的字符串。

print(sh["A2"].value)

我想知道是否有人有使用 openpyxl 的经验来阐明如何解决这个问题。

【问题讨论】:

  • 将公式放在大括号中是否有帮助,例如:{=IF(ISERR(VLOOKUP(F1,A1:B21,2,FALSE)),”False:Not Contains”,”True: Text Found”)}。问题很可能是由于您拥有 ExcelO365,如果没有提供一个,数组公式将遭受称为隐式交集的操作。这就是“@”的含义。话虽如此,我对 openpyxl 的了解还不够,无法告诉您这是否可以解决问题。
  • 也许this链接告诉你如何通过openpyxl添加数组公式
  • 非常感谢,这个链接正是我需要的。问题是我想我不知道用 excel 术语要问什么。

标签: python excel openpyxl


【解决方案1】:

按照答案:How to insert array formula in an Excel sheet with openpyxl?(谢谢 JvdV)

from openpyxl import Workbook
wb = Workbook()
sh = wb.active
sh["A2"] = '=IF(ISERR(VLOOKUP(F1,A1:B21,2,FALSE)),”False:Not Contains”,”True: Text Found”)'
sh.formula_attributes["A2"] = {"t": "array", "ref": "A2:A2"}

其中“t”代表类型,“ref”是要写入公式的单元格数组。但是,我找不到与以下相关的任何资源:

openpyxl.worksheet.worksheet.Worksheet.formula_attributes

【讨论】:

  • 注意。未来版本中的接口将发生变化,以匹配即将推出的对数据表公式的支持。
猜你喜欢
  • 2018-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-21
相关资源
最近更新 更多