EPPlus не может получить значение ячейки, если документ не был открыт раньше - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь разобрать лист Excel с помощью EPPlus, и у меня возникают проблемы с получением значений из ячеек формулы. Документ, который я использую, загружается из inte rnet как байтовый массив во время выполнения и работает нормально, если его сохранить и открыть с помощью Excel. Формат файла - .xlsm (макросы включены).

Проблема заключается в следующем: некоторые ячейки содержат формулы, которые просто ссылаются на ячейки на разных листах, например: ='diffSheet'!A25. Я не могу получить значения из таких ячеек: cell.Value имеет значение null, а cell.Text - это просто «-».

Я пробовал вызвать метод Calculate () для этих ячеек, но все, что он делает, это просто загрузка для действительно долгое время, а затем каждый раз возвращает ошибку «#VALUE».

Странно то, что тот же документ обрабатывается одним и тем же кодом, если документ был открыт Excel ранее. Я попытался загрузить документ вручную, открыть его в Excel, а затем загрузить обратно; и после этого у кода не было проблем с получением значений из тех же ячеек. Возможно, стоит отметить, что Excel не вычисляет значения формул, если вы не нажмете кнопку «Разрешить редактирование», но, насколько мне известно, такой вещи как EPPlus не существует. Я попытался сохранить и снова открыть документ программно, но это не сработало.

Надеюсь, кто-нибудь сможет объяснить, в чем проблема, и есть ли способ обрабатывать документ без необходимости открывать его каждый раз пользователю .

Заранее спасибо!

1 Ответ

0 голосов
/ 13 августа 2020

Файлы Excel могут содержать значения для ячеек, в которых есть формулы, но значения также могут отсутствовать. Как только вы откроете и сохраните файл в Excel, Excel вычислит и запишет все значения.

EPPlus может выполнять некоторые вычисления, но он не использует Excel (или требует его установки), и это не так. продвинутый в вычислениях, как и сам Excel.

Насколько мне известно, выполнение вычислений - важная часть работы для разработчиков EPPlus, которые сейчас выходят на коммерческую основу со своей версией 5.

Excel (xlsx) ) файлы на самом деле являются файлами ZIP. Поэтому, если вы их извлечете, вы можете просмотреть содержимое как xml. Например:

image 1 2 A1 + A2 3

В ячейке A3 вы можете увидеть формулу и значение. Go вперед и проверьте ваши файлы Excel перед открытием, и вы увидите.

(Это не относится к старому формату .xls.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...