2016-05-26 5 views
0

Из-за проблемы с памятью мы используем подход Sax parser для apache poi для чтения огромных файлов excel .xlsx. Однако этот подход, по-видимому, имеет ограничение на ячейки формулы. Кажется, он считывает значение из значения кэшированной формулы. Я не могу найти лучшее решение для пересчета пересчета, чтобы обновить значение. Кто-нибудь сталкивается с такой же проблемой? Благодарю.Переоценка ячейки вычисления формулы при использовании парсера Sax Apache-Poi

+0

Что случилось со значениями, кэшированными в файле Microsoft Excel? – Gagravarr

+0

По некоторым причинам значение ячейки формулы не является триггером для пересчета. Тогда то, что мы получили, это старая ценность, не обновляется. Даже приложение Excel имеет возможность принудительного пересчета при открытии. Другой пример упоминается в документе apache poi: http://poi.apache.org/spreadsheet/eval.html (Пересчет формул) – neojh

ответ

1

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

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

См. XSSFFormulaEvaluator для реализации для .xlsx, которая в значительной степени зависит от классов XSSFWorkbook/XSSFSheet/XSSFRow/XSSFCell.

Смежные вопросы