Насколько я понимаю, ячейки с формулами в Microsoft Office Excel могут содержать вычисленные значения при сериализации и сохранении в форматах Office Open XML (в частности, SpreadsheetML).Скорее всего, это относится к другим типам зависимостей и функций значений из других ячеек (таких как диаграммы, сводные таблицы и т. Д.).Скорее всего, я делаю что-то не так, но при обработке этих документов XML (SpreadsheetML) внешними инструментами, которые не используют какие-либо компоненты .Net или аналогичные API-интерфейсы, предоставляемые MS, а просто манипулируют XML, я сталкиваюсь с проблемой, которая возникает при измененииНекоторое содержимое одной из таблиц Excel по-прежнему будет использовать последние созданные значения в ячейках, содержащих формулы.Поэтому, когда пользователь открывает сгенерированную электронную таблицу, он видит измененные данные, но все вычисленные поля устарели.Теперь единственное, что я смог найти (в эти дни) в Интернете, было следующее:
http://openxmldeveloper.org/discussions/formats/f/14/p/1561/4164.aspx
Это действительно не предпочтительное решение, особенно если оно применимо к любому виду вычисляемых ячеек иобъекты (диаграммы и т. д.), поскольку это означает частичную реализацию некоторого процессора SpreadsheetML, когда вы точно не знаете структуру всех рабочих таблиц.
Я бы надеялся, что в Excel будет либо опция, либо конфигурация в одномчастей SpreadsheetML для принудительного пересчета или пометки ячеек, но я пока не могу их найти.
Существует предположение, что сценарии помогут, но мое отсутствие знаний в этой области не принесло мнедо каких-либо успешных результатов, так как я не уверен, как включить сценарии в лист SpreadsheetML.Хотя я нашел довольно много примеров, как вызвать пересчет и как добавить слушатели открытых событий.