Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] результаты формул в excel (http://forum.oszone.net/showthread.php?t=105398)

Surround 20-04-2008 11:00 785319

результаты формул в excel
 
Есть программа, которая читает содержимое xls-файла через OLEDB (написано на C#). Файл этот содержит расчетные формулы, типа: если дата окончания работы < даты срока, то состояние = "в норме", если нет, то "отклонение". Так вот интересует конечное содержимое этих, так сказать, ячеек состояния. Опытным путем я понял, что эксель, что называется, проводит формулы, т.е. записывает результаты вычислений по ним в какой-то кеш документа, откуда потом берет, чтобы не считать заново (и, по всей видимости, он и читается при OLEDB). Так вот, при сохранении документа, видать, не все результаты формул были сохранены (сами формулы на месте), так как при обращении прогаммы к этим ячейкам возвращается не то, что должно там быть (не тот результат, который видим в документе). А если просто-напросто открыть документ и закрыть, ничего не меняя и ответив Да в диалоге Сохранить документ (видимо как раз-то самое проведение), то впоследствии данные читаются нормально. Точнее, как сказать читаются. Читаются они в обоих случаях. Только результат правльный - во втором (то что видит прогамма = тому, что есть в документе). Такой глюк не у всех, а лишь у некоторых формул. Так вот, можно ли как-то "провести" документ, не открывая/закрывая его?

pva 21-04-2008 14:39 786068

Есть вариант создать объект activeX "Excel.Sheet", "скопировать" и "вставить значения". Потом работать со значениями...

azbest 21-04-2008 23:57 786396

Если ваш файл не "надстройка" (расширение ***.xla - скомпилированный файл)а обычный или шаблон, Тогда в открытом файле нажмите Alt+F8 и в появившемся окне поочерёдно тыкая на каждую "строчку" в самом большом диалоговом окне (это названия макросов) и нажимая "изменить" - прочитайте содержимое этих макросов. Там наверняка будет ясно где храняться промежуточные данные.


Время: 14:08.

Время: 14:08.
© OSzone.net 2001-