Найти - Пользователи
Полная версия: xlrd и расчет формул
Начало » Python для экспертов » xlrd и расчет формул
1
pyuser
Можно ли с помощью библиотеки получить значение ячейки, в которой записана формула?
т.е. значение ячейки - формула, например, =A1+B23 + J11? как получить рассчитанное значение?
bobry
По-моему, такая штука в xlrd не реализована, но что вам мешает разобрать формулу самому и вычислить то что получится в итоге? Можете потом patch отправить им и все возрадуются :)
Андрей Светлов
такой возможности нет - и не будет. Потому что реализация VBA - не самая легкая и приятная задача.
Slava
Вообще то, такая возможность есть и простые формулы вида =25*F6 +G6 - H6/I6 xlrd вполне обрабатываются, а значение, например через sheet.cell_value(…) можно получить
pyuser
…. то ли лыжи не едут, то ли со мной что-то не в порядке :-)
задача была разовая: есть 365 файлов, в которых хранятся почасовые значения неких параметров, нужно сделать годовой отчет - просуммировать значения параметров по месяцам

суммы за сутки считал так: sum(sheet.row_values(…)), посчиталось не правильно, стал разбираться и оказалось, что если в ячейке прописана формула, то возвращается не расчитанное значение и даже не формула, а банальный 0 :-( sheet.cell_value(…) и cell.value возвращали тоже самое….
переписал с использованием pywin32 - все посчиталось, как надо.

на днях решил проверить утверждение Slava, создал лист с парой формул, попробовал почитать - действительно все считается, т.е. и sheet.cell_value(…) и sheet.row_values(…) возвращают нормальные значения
со зла повторно натравил свой скрипт (xlrd) на выше описанный набор файлов - результирующий файл оказался абсолютно идентичен файлу полученному с помощью pywin32.
в чем прикол - до сих пор не понимаю
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB