pyuser
Янв. 22, 2010 04:59:05
Можно ли с помощью библиотеки получить значение ячейки, в которой записана формула?
т.е. значение ячейки - формула, например, =A1+B23 + J11? как получить рассчитанное значение?
bobry
Фев. 2, 2010 10:15:42
По-моему, такая штука в xlrd не реализована, но что вам мешает разобрать формулу самому и вычислить то что получится в итоге? Можете потом patch отправить им и все возрадуются :)
Андрей Светлов
Фев. 2, 2010 11:10:20
такой возможности нет - и не будет. Потому что реализация VBA - не самая легкая и приятная задача.
Slava
Фев. 11, 2010 10:19:38
Вообще то, такая возможность есть и простые формулы вида =25*F6 +G6 - H6/I6 xlrd вполне обрабатываются, а значение, например через sheet.cell_value(…) можно получить
pyuser
Фев. 27, 2010 02:25:39
…. то ли лыжи не едут, то ли со мной что-то не в порядке :-)
задача была разовая: есть 365 файлов, в которых хранятся почасовые значения неких параметров, нужно сделать годовой отчет - просуммировать значения параметров по месяцам
суммы за сутки считал так: sum(sheet.row_values(…)), посчиталось не правильно, стал разбираться и оказалось, что если в ячейке прописана формула, то возвращается не расчитанное значение и даже не формула, а банальный 0 :-( sheet.cell_value(…) и cell.value возвращали тоже самое….
переписал с использованием pywin32 - все посчиталось, как надо.
на днях решил проверить утверждение Slava, создал лист с парой формул, попробовал почитать - действительно все считается, т.е. и sheet.cell_value(…) и sheet.row_values(…) возвращают нормальные значения
со зла повторно натравил свой скрипт (xlrd) на выше описанный набор файлов - результирующий файл оказался абсолютно идентичен файлу полученному с помощью pywin32.
в чем прикол - до сих пор не понимаю