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
A
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.
Was stimmt nicht mit den Werten, die von Microsoft Excel in der Datei zwischengespeichert werden? – Gagravarr
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