2015-11-16 3 views
2

У меня есть pandas dataframe, который выглядит следующим образом:Read первенствует с помощью кода Python (в Linux) и получить формулу значения

A B C 
1 2 =A2+B2 
3 4 =A3+B3 

Я пишу это в файл Excel с помощью xlsxwriter в Python и преобразовать фрейм данных чтобы преуспеть. Теперь, когда я читаю Excel с Python, я получаю 0.0 как значение для C2, а не 3 (=A2+B2). Однако, если я открываю Excel вручную, формулы оцениваются и имеют «3» в «C2». Поэтому проблема возникает при чтении из кода.

Есть ли способ в Python читать столбцы Excel с формулами в качестве значений?

ответ

0

Я бы сохранил файл Excel как .csv. Excel должен автоматически преобразовывать все формулы в значения. Затем вы можете прочитать .csv в Python с обычными файловыми методами.

+0

Если я открыть Excel файл вручную и сохранить как CSV, то я знайте, что это работает. Но если я создаю CSV из excel из кода, я не могу получить значение ячейки формулы. – Guru

1

Таким образом, проблема заключается в чтении из кода.

Не совсем.

Проблема в том, что XlxsWriter не записывает значение формулы в файл Excel. Из XlsxWriter FAQ: результаты

Формула отображения как ноль в не-Excel приложений

В связи с широким диапазоном возможных формул и взаимозависимостей между ними XlsxWriter не происходит, и реально не может, вычислить результат формулу, когда она записывается в файл XLSX. Вместо этого он сохраняет значение 0 в качестве результата формулы. Затем он устанавливает глобальный флаг в файле XLSX, чтобы сказать, что все формулы и функции должны быть пересчитаны при открытии файла.

Это метод, рекомендованный в документации Excel, и в целом он отлично работает с приложениями для работы с электронными таблицами. Тем не менее, приложения, которые не имеют возможности вычислять формулы, такие как Excel Viewer или несколько мобильных приложений, будут отображать только 0 результатов.

При необходимости, можно также указать расчетный результат формулы с помощью дополнительного параметра значение в write_formula():

worksheet.write_formula('A1', '=2+2', num_format, 4)

+0

да, вы правы. Но нет ли способа в python получить значение формулы ячейки от excel? – Guru

 Смежные вопросы

  • Нет связанных вопросов^_^