Err:508 在用 Openpyxl 编写的公式中
Err:508 in formula written with Openpyxl
我有这个脚本:
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:
但是,如果我在命令行中编辑公式,不做任何更改(即添加 space 或擦除任何字符并再次写入相同的字符),则公式有效。
知道错在哪里吗?
按照@Charlie Clark 的建议在 https://openpyxl.readthedocs.io/en/stable/usage.html#using-formulae 中搜索,它说:
Warning
NB you must use the English name for a function and function arguments must be separated by commas and not other punctuation such as semi-colons.`
所以这一行:
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)"
我有这个脚本:
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:
但是,如果我在命令行中编辑公式,不做任何更改(即添加 space 或擦除任何字符并再次写入相同的字符),则公式有效。
知道错在哪里吗?
按照@Charlie Clark 的建议在 https://openpyxl.readthedocs.io/en/stable/usage.html#using-formulae 中搜索,它说:
Warning
NB you must use the English name for a function and function arguments must be separated by commas and not other punctuation such as semi-colons.`
所以这一行:
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)"