Форум сайта python.su
Можно ли с помощью библиотеки получить значение ячейки, в которой записана формула?
т.е. значение ячейки - формула, например, =A1+B23 + J11? как получить рассчитанное значение?
Офлайн
По-моему, такая штука в xlrd не реализована, но что вам мешает разобрать формулу самому и вычислить то что получится в итоге? Можете потом patch отправить им и все возрадуются :)
Офлайн
такой возможности нет - и не будет. Потому что реализация VBA - не самая легкая и приятная задача.
Офлайн
Вообще то, такая возможность есть и простые формулы вида =25*F6 +G6 - H6/I6 xlrd вполне обрабатываются, а значение, например через sheet.cell_value(…) можно получить
Отредактировано (Фев. 11, 2010 10:23:42)
Офлайн
…. то ли лыжи не едут, то ли со мной что-то не в порядке :-)
задача была разовая: есть 365 файлов, в которых хранятся почасовые значения неких параметров, нужно сделать годовой отчет - просуммировать значения параметров по месяцам
суммы за сутки считал так: sum(sheet.row_values(…)), посчиталось не правильно, стал разбираться и оказалось, что если в ячейке прописана формула, то возвращается не расчитанное значение и даже не формула, а банальный 0 :-( sheet.cell_value(…) и cell.value возвращали тоже самое….
переписал с использованием pywin32 - все посчиталось, как надо.
на днях решил проверить утверждение Slava, создал лист с парой формул, попробовал почитать - действительно все считается, т.е. и sheet.cell_value(…) и sheet.row_values(…) возвращают нормальные значения
со зла повторно натравил свой скрипт (xlrd) на выше описанный набор файлов - результирующий файл оказался абсолютно идентичен файлу полученному с помощью pywin32.
в чем прикол - до сих пор не понимаю
Офлайн