Ошибка: 508 в формуле, написанной с Openpyxl - PullRequest
0 голосов
/ 10 июля 2019

У меня есть этот скрипт:

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, я вижу Ошибка: 508 в E столбце:

Err:508

Однако, если я отредактирую формулу в командной строке, ничего не изменив (то есть добавив пробел или удалив любой символ и напишу то же самое снова), формула будет работать.

Есть идеи, где ошибка?

1 Ответ

1 голос
/ 10 июля 2019

Поиск в https://openpyxl.readthedocs.io/en/stable/usage.html#using-formulae, как предложил @Charlie Clark, гласит:

Внимание

NB. Вы должны использовать английское имя для функции, а аргументы функции должны быть разделены запятыми, а не другими пунктуациями, такими как точки с запятой.

так вот эта строка:

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)"
...