xlsxwriter и LibreOffice не показывает результат формулы
Я пытаюсь создать файл Excel с простой формулой:
import xlsxwriter
workbook = xlsxwriter.Workbook('testxlsx.xlsx', {'strings_to_numbers': True})
ws = workbook.add_worksheet()
ws.write('A2', 'Number one')
ws.write('B2', '1')
ws.write('A3', 'Number two')
ws.write('B3', "1000")
ws.write('A4', "Number three")
ws.write('B4', "1050")
ws.write('A5', "Number four")
ws.write('B5', "3")
ws.write('A6', "Result")
ws.write('B6', '=IF(B5=3,ROUND(100-(B3/B4*100),1),ROUND(100-(B3/(B4*1.502)*100),1))')
workbook.close()
созданный файл отлично работает в Excel, но при открытии в LibreOffice Calc формула не оценивается. Мне нужно повторно ввести числовые значения, и тогда это сработает.
что я делаю не так?
1 ответов
из xlsxwriter docs:
XlsxWriter не вычисляет результат формулы и вместо этого сохраняет значение 0 в качестве результата формулы. Затем он устанавливает глобальный флаг в файле XLSX сказать, что все формулы и функции должны быть пересчитаны при открытии файла. Это метод, рекомендованный в документации Excel, и в целом он отлично работает с приложениями электронных таблиц. Однако приложения, которые не имеют возможности для расчета формулы, такие как Excel Viewer или некоторые мобильные приложения будут отображать только 0 результатов.
Что касается того, почему пересчет не происходит автоматически, из ask.libreoffice.org ответ:
LibreOffice намеренно не пересчитывает старые электронные таблицы, потому что, поскольку формулы обновляются от версии к версии или между различными программами электронных таблиц, результаты могут быть разными. Перейти к инструментам-параметры-LibreOffice Calc, в разделе "пересчет при загрузке файла" измените два раскрывающихся списка: "Excel 2007 и новее" и "электронная таблица ODF (не сохраненная LibreOffice)" на "всегда пересчитывать". Нажмите кнопку ОК, закройте электронную таблицу и LibreOffice. Теперь откройте файл в LibreOffice, и вы увидите, что Формулы пересчитаны.
также перейдите в меню Сервис-содержимое ячейки и убедитесь, что Автокалькуляция выбранный.
Я подтвердил, что настройка "всегда пересчитывать "или" приглашение " работала для мне. Кроме того, вы всегда можете нажать control-shift-F9.