Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 22, 2010 04:59:05

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

xlrd и расчет формул

Можно ли с помощью библиотеки получить значение ячейки, в которой записана формула?
т.е. значение ячейки - формула, например, =A1+B23 + J11? как получить рассчитанное значение?



Офлайн

#2 Фев. 2, 2010 10:15:42

bobry
От:
Зарегистрирован: 2008-08-03
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

xlrd и расчет формул

По-моему, такая штука в xlrd не реализована, но что вам мешает разобрать формулу самому и вычислить то что получится в итоге? Можете потом patch отправить им и все возрадуются :)



Офлайн

#3 Фев. 2, 2010 11:10:20

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

xlrd и расчет формул

такой возможности нет - и не будет. Потому что реализация VBA - не самая легкая и приятная задача.



Офлайн

#4 Фев. 11, 2010 10:19:38

Slava
От:
Зарегистрирован: 2009-11-21
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

xlrd и расчет формул

Вообще то, такая возможность есть и простые формулы вида =25*F6 +G6 - H6/I6 xlrd вполне обрабатываются, а значение, например через sheet.cell_value(…) можно получить



Отредактировано (Фев. 11, 2010 10:23:42)

Офлайн

#5 Фев. 27, 2010 02:25:39

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

xlrd и расчет формул

…. то ли лыжи не едут, то ли со мной что-то не в порядке :-)
задача была разовая: есть 365 файлов, в которых хранятся почасовые значения неких параметров, нужно сделать годовой отчет - просуммировать значения параметров по месяцам

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

на днях решил проверить утверждение Slava, создал лист с парой формул, попробовал почитать - действительно все считается, т.е. и sheet.cell_value(…) и sheet.row_values(…) возвращают нормальные значения
со зла повторно натравил свой скрипт (xlrd) на выше описанный набор файлов - результирующий файл оказался абсолютно идентичен файлу полученному с помощью pywin32.
в чем прикол - до сих пор не понимаю



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version