У меня есть библиотека, которая генерирует документы Word с помощью OpenXML SDK, одна из технических возможностей библиотеки является поколением таблиц с формулами на последней строке (такой как SUM(ABOVE)
).
Word имеет эти встроенные функции, но при генерации документа я должен предположить, что Word не установлен на машине.
Проблема состоит в том, что, если я просто генерирую таблицу и поле формулы, она не будет обновлена автоматически, когда документ будет открыт, пользователь должен был бы открыть документ и вручную выбрать "поле обновления" для функции, которая будет вычислена.
Там какой-либо путь состоит в том, чтобы сделать это в рамках кода (не имея необходимость вычислять функцию вручную)?
Нет, это сделано намеренно. Подробнее см. Какие поля обновляются при открытии, повторной компоновке или печати документа .
Это верно и для любого ручного ввода (например, если у вас было 10 в A1, 10 в A2, вставлено = СУММ (ВЫШЕ)
в A3, у вас будет 20. Но если вы измените A1 до 15, A3 не будет обновляться автоматически, пока вы не сделаете это вручную).
Единственный способ обойти это - создать надстройку (VSTO, VBA и т. Д.) Для обработки события Document_Open
на клиентских машинах и запустить некоторый код для обновления всех полей или создать приложение взаимодействия. на сервере, который открывает документ, отображает его с помощью некоторого кода, а затем сохраняет его обратно перед отправкой дальше.