У меня есть класс, который читает & пишет ячейки Excel (xlsx) с использованием OpenXML SDK. Класс основан на наиболее проголосованном ответе отсюда: Open XML SDK 2.0 - how to update a cell in a spreadsheet?OpenXML - обновить лист Excel после обновления ячейки
Мне нужно обновить ячейку, а затем получить значение другой ячейки, которая содержит формулу расчета. Обновление работает нормально, но когда я прочитал ячейку формулы после обновления, я получаю старое значение, которое существовало в документе перед редактированием. Однако, когда я открываю свой xlsx вручную после запуска программы, я могу видеть правильное значение.
Так что кажется, что старое значение для ячейки кэшировано где-то ... Что странно, потому что я открываю/закрываю свой документ каждый раз, прежде чем я буду читать/писать ячейки.
EDIT: Ответ Винсента заставил меня обновить образец кода. Я добавил метод Refresh, который открывает, сохраняет и закрывает документ в приложении Excel, запущенном в фоновом режиме. Это пересчитывает мои формулы. Для получения более подробной информации и примера кода C# см.: http://fczaja.blogspot.com/2013/05/how-to-read-and-write-excel-cells-with.html
http://stackoverflow.com/questions/2668643/openxml-sdk-make-excel-recalculate-formula – Chris
Да, я это видел. Если вы посмотрите на мои методы UpdateCell и ReadCell, вы увидите, что я уже пробовал применить решение из самого высокого ответа - не повезло – filip
Вы также должны прочитать другие ответы. Я пытаюсь найти, где я прочитал, что единственный способ убедиться, что Excel пересчитает формулу, - удалить кешированное значение ячейки формулы – Chris