【问题标题】:Err:508 in formula written with Openpyxl用 Openpyxl 编写的公式中的错误:508
【发布时间】:2019-07-10 12:36:02
【问题描述】:

我有这个脚本:

from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws['A1'] = 1 #any value
ws['B1'] = 0 #any value
ws['C1'] = 3 #any value
ws['D1'] = 0 #any value
ws['E1'] = "= IF(A1<>0;A1;1) * IF(B1<>0;B1;1) * IF(C1<>0;C1;1) * IF(D1<>0;D1;1)"
wb.save('error.xlsx')

当我使用 LibreOffice Calc 打开文件时,我在 E 列中看到 Err:508

但是,如果我在命令行中编辑公式,而不进行任何更改(即添加空格或删除任何字符并再次写入相同内容),则公式有效。

知道错误在哪里吗?

【问题讨论】:

标签: python openpyxl libreoffice-calc


【解决方案1】:

按照@Charlie Clark 的建议在https://openpyxl.readthedocs.io/en/stable/usage.html#using-formulae 中搜索,它说:

警告

注意,函数必须使用英文名称,函数参数必须用逗号分隔,而不是其他标点符号,例如分号。`

所以这一行:

ws['E1'] = "= IF(A1<>0;A1;1) * IF(B1<>0;B1;1) * IF(C1<>0;C1;1) * IF(D1<>0;D1;1)"

必须是:

ws['E1'] = "= IF(A1<>0,A1,1) * IF(B1<>0,B1,1) * IF(C1<>0,C1,1) * IF(D1<>0,D1,1)"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 2022-01-22
    • 2019-01-15
    • 1970-01-01
    相关资源
    最近更新 更多