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