2016-05-26 21 views
0

Wegen Speicher Bedenken, verwenden wir Sax Parser Ansatz von Apache Poi, um große .xlsx Excel-Dateien zu lesen. Dieser Ansatz scheint jedoch bei Formelzellen eine Einschränkung zu haben. Es scheint den Wert aus dem 'zwischengespeicherten Formelwert' zu lesen. Ich kann die beste Lösung nicht finden, um die Neuberechnung auszulösen, um den aktualisierten Wert zu haben. Hat jemand dasselbe Problem? Vielen Dank.Reevaluate Formel Berechnungszelle bei Verwendung von Sax Parser von Apache-Poi

+0

Was stimmt nicht mit den Werten, die von Microsoft Excel in der Datei zwischengespeichert werden? – Gagravarr

+0

Aus bestimmten Gründen wird der Wert der Formelzelle nicht neu berechnet. Was wir dann haben, ist alter Wert, ist nicht auf dem neuesten Stand. Selbst Excel-Anwendungen haben die Möglichkeit, beim Öffnen eine Neuberechnung zu erzwingen. Ein anderes Beispiel wird in Apache Poi Dokument erwähnt: http://poi.apache.org/spreadsheet/eval.html (Neuberechnung von Formeln) – neojh

Antwort

1

Eine allgemeine Lösung hierfür ist wahrscheinlich sehr schwierig, da die Neubewertung der Formel möglicherweise einen wahlfreien Zugriff auf eine beliebige Zelle in einem Blatt erfordert, da Formeln auf sie verweisen können, was bei Verwendung von SAX nicht möglich ist.

Sie können möglicherweise Ihren eigenen Formel-Evaluator implementieren, der mit einer Reihe von Einschränkungen hinsichtlich der möglichen Typen von Formeln und Referenzen arbeitet, aber es ist wahrscheinlich ein wenig Arbeit zu tun.

Siehe XSSFFormulaEvaluator für die Implementierung für .xlsx, die sich stark auf die Klassen XSSFWorkbook/XSSFSheet/XSSFRow/XSSFCell stützt.