Festlegen von Formeln in Excel mit Apache POI

1. Übersicht

In diesem kurzen Tutorial werden wir anhand eines einfachen Beispiels erläutern, wie wir mithilfe von Apache POI Formeln in einer Microsoft Excel-Tabelle festlegen können .

2. Apache POI

Apache POI ist eine beliebte Open-Source-Java-Bibliothek, die Programmierern APIs zum Erstellen, Ändern und Anzeigen von MS Office- Dateien bietet .

Es verwendet die Arbeitsmappe , um eine Excel-Datei und ihre Elemente darzustellen. Eine Zelle in einer Excel-Datei kann verschiedene Typen haben, z. B. FORMEL .

Um den Apache-POI in Aktion zu sehen, legen wir eine Formel fest, um die Summe der Werte in den Spalten A und B in einer Excel-Datei zu subtrahieren. Die verknüpfte Datei enthält die folgenden Daten:

3. Abhängigkeiten

Zuerst müssen wir die POI-Abhängigkeit zu unserer Projektdatei pom.xml hinzufügen . Um mit Excel 2007+ Arbeitsmappen zu arbeiten, sollten wir poi-ooxml verwenden :

 org.apache.poi poi-ooxml 4.1.2 

Beachten Sie, dass wir für frühere Versionen von Excel stattdessen die Poi- Abhängigkeit verwenden sollten.

4. Zellensuche

Öffnen wir zunächst unsere Datei und erstellen die entsprechende Arbeitsmappe:

FileInputStream inputStream = new FileInputStream(new File(fileLocation)); XSSFWorkbook excel = new XSSFWorkbook(inputStream);

Dann müssen wir die Zelle erstellen oder nachschlagen, die wir verwenden werden . Mit den zuvor gemeinsam genutzten Daten möchten wir Zelle C1 bearbeiten.

Das steht auf dem ersten Blatt und der ersten Zeile, und wir können den POI nach der ersten leeren Spalte fragen:

XSSFSheet sheet = excel.getSheetAt(0); int lastCellNum = sheet.getRow(0).getLastCellNum(); XSSFCell formulaCell = sheet.getRow(0).createCell(lastCellNum + 1);

5. Formeln

Als nächstes möchten wir eine Formel für die Zelle festlegen, nach der wir gesucht haben.

Wie bereits erwähnt, subtrahieren wir die Summe von Spalte B von der Summe von Spalte A. In Excel wäre dies:

=SUM(A:A)-SUM(B:B)

Und das können wir mit der setCellFormula- Methode in unsere formulaCell schreiben :

formulaCell.setCellFormula("SUM(A:A)-SUM(B:B)");

Dies wird die Formel nicht auswerten. Dazu müssen wir den XSSFFormulaEvaluator von POI verwenden :

XSSFFormulaEvaluator formulaEvaluator = excel.getCreationHelper().createFormulaEvaluator(); formulaEvaluator.evaluateFormulaCell(formulaCell);

Das Ergebnis wird in der ersten Zelle der nächsten leeren Spalte festgelegt:

Wie wir sehen können, wird das Ergebnis berechnet und in der ersten Zelle der Spalte C gespeichert. Auch die Formel wird in der Formelleiste angezeigt.

Beachten Sie, dass die FormulaEvaluator Klasse uns mit anderen Methoden bietet auszuwerten FORMEL in Excel - Dateien, wie evaluateAll , die Schleife wird über alle Zellen und zu bewerten.

6. Fazit

In diesem Tutorial haben wir gezeigt, wie Sie mithilfe der Apache POI-API eine Formel für eine Zelle in einer Excel-Datei in Java festlegen.

Der vollständige Quellcode für diesen Artikelist über GitHub verfügbar.