Ich habe einige Formeln in Zellen meines Blattes, und ich möchte sie nach dem Einfügen einiger Werte auswerten. Ex:
Meine Formel lautet =SUM(B1,B2)
Vor dem Einfügen von Werten war B1
value 1
und B2
value war 3
und das Formelergebnis ist 4
Nach dem Einfügen von Werten hat B1 jetzt den Wert 5
, und B2 hat den Wert 2
, aber die Formel erzeugt immer noch 4
, wie kann ich das auswerten / auslösen, dass dies berechnet wird?
Natürlich, nachdem ich den Return-Knopf in der Formelzelle gedrückt habe, wird der neue Wert 7
berechnet, gibt es eine Möglichkeit, dies ohne manuelle Interaktion auszulösen?
Ich benutze Excel 2007 so XSSFWorkbook
BEARBEITEN / AKTUALISIEREN:
Ich habe Gabors Lösung benutzt, bevor er es gepostet hat, aber ich benutze es als Referenz, hier ist was passiert:
%Vor%Hier ist ein Teil des relevanten Codes:
%Vor%ruft Evaluator tatsächlich auf:
%Vor%Ich suche jemanden, der das benutzt und erfolgreich war, nicht diejenigen, die eine Lösung googlen, ohne es wirklich auszuprobieren. Ich habe viel gegoogelt, um zumindest zu sagen.
Per Gagravar Vorschlag Ich habe 2 POIs auf meinem Klassenpfad:
%Vor%Ich brauche zwar die Version 3.7 für XSSF-Arbeitsmappen usw.
LÖSUNG:
%Vor%Um einen Kommentar zu einer Antwort zu promoten ...
Sie müssen zunächst sicherstellen, dass Sie die gleiche POI-Version für das Hauptjar und den OOXML-Teil verwenden. Ihr Maven-Snippet zeigte 3,7 für einen und 3,8 Beta 1 für den anderen. Sie müssen sicherstellen, dass sie beide gleich sind. (Vielleicht möchten Sie sogar 3.8-beta2 verwenden, was einfach out ist).
Verwenden Sie dann entweder:
%Vor%oder:
%Vor%Weitere Informationen finden Sie Ссылка .
Vielleicht XSSFFormulaEvaluator .evaluateAllFormulaCells(XSSFWorkbook wb)
?
(oder genauer: evaluateFormulaCell(Cell cell)
.)
Wenn es nicht funktioniert: Welche Version von POI verwenden Sie? Formeln in XSSF werden ab Version 3.5 unterstützt.
Versuchen Sie auch, XSSFCreationHelper zu verwenden, um Ihren Formel-Evaluator zu instanziieren wie von den POI-Dokumenten vorgeschlagen.
Tags und Links java excel apache-poi