Контекст
Я использую xlsxwriter для записи некоторых данных в файл xlsx. из кода python.
Мне нужно чтобы заполнить ячейку формулой, вычисляющей среднее значение определенного столбца (содержащего значения времени).
Описание проблемы
Я заметил, что когда я пытаюсь открыть свой документ с помощью Excel, он автоматически добавляет символ «@» прямо перед моим диапазоном, что приводит к сбою вычисления моей формулы...
Если я вручную удалю этот лишний «@», формула работает отлично, как и ожидалось.
Это действительно раздражает, когда приходится вручную исправлять мою формулу, так как у меня есть много похожих вычислений средних значений, которые не работают из-за этого. предотвратить это нежелательное поведение программно из моего кода Python с помощью API xlsxwriter.
Вопрос
Кто-нибудь знает, есть ли способ запретить Excel выполнять какие-либо изменения моих формул?
Что я уже пробовал
Я уже пытался защитить все свои листы (сделать их только для чтения), но, похоже, это применимо только для пользователя, а не для Excel...
Пример
Вот пример моей проблемы (чтобы было понятнее, что это загрузка простого текста).
Из моего кода Python, если я напишу следующую формулу:
=AVERAGE(TIMEVALUE(B2:B8))
После открытия документа Excel автоматически изменяет формулу следующим образом:
=AVERAGE(TIMEVALUE(@B2:B8))
Что делает результат расчета:
#VALUE!
Если я отменю то, что делает Excel, вручную восстановив мою формулу (вручную отредактировав ячейку и удалив «@»), я получу желаемое вычисленное среднее значение, как я и ожидал.
@
— это неявный оператор пересечения. По мнению BigBen, решение вашей проблемы состоит в том, чтобы писать в.Formula2
, а не в.Formula
. Если xlswriter (пока) этого не поддерживает, это ошибка xlswriter, а не Excel. - person chris neilsen   schedule 20.04.2021