рассчитать значения ячеек из формулы программно в OpenXML SDK2 - PullRequest
2 голосов
/ 10 августа 2011

Я использую OpenXML SDK2.0 для расчетов в Excel и придерживаюсь одной вещи.

В основном я заполняю файл Excel данными из базы данных и отправляю их пользователю ... этот бит работаетхорошо.Теперь я хочу получить вычисленное значение ячейки после того, как в него вставлена ​​формула, но не открывая документ Excel ... Есть ли способ заполнить файл Excel с помощью openxml sdk2.0 и сразу получить обратно вычисленные значения?

Возможно, кто-то сталкивался с подобной проблемой или имеет рабочее решение!

Спасибо:)

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011
spreadSheet.WorkbookPart.Workbook.CalculationProperties.ForceFullCalculation = true;  
spreadSheet.WorkbookPart.Workbook.CalculationProperties.FullCalculationOnLoad = true; 

это будет работать очень хорошо, когда вы открываете Excel вручную. Но также не можете программно получить значение ячейки с формулой. Если вы хотите получить значение ячейки с помощью Open Xml SDK, вам нужно открыть файл Excel на Приложение Excel и сохраните файл. затем можно получить значение ячейки программно.

Это информация из центра разработки Office:

Как автоматически пересчитать значение формулы для ячеек в электронной таблице?

Ячейка с формулой сохранит кэшированное значение в разметке и покажет кэшированное значение в качестве результата. Если значение ячейки, на которое ссылается формула, изменяется программно, ячейка с формулой не имеет представления об этом изменении. Кэшированное значение этой формулы устареет и должно быть обновлено. Автоматический пересчет требует функциональности макета во время выполнения, которая не поддерживается в SDK. Обходной путь для этой ситуации заключается в следующем: удалите кэшированное значение ячейки формулы, а затем вызовите Excel, чтобы пересчитать значение для вас в бэкэнде. Служба Excel может помочь здесь.

0 голосов
/ 15 сентября 2011

Помимо написания собственного парсера для вычисления значения ячейки, в настоящее время это невозможно. Конечно, вы можете использовать автоматизацию под учетной записью службы для перерасчета формул за кулисами, но это может быстро запутаться.

...