[Java] Einfügen oder Lesen von Formeln und Funktionen in Excel
Tags: java, excel, xlsx, office
Published: 2023-11-15 08:19:35

Formeln und Funktionen sind zwei Berechnungswerkzeuge in Excel, mit denen Daten einfach und effizient verarbeitet und analysiert werden können. Eine Formel ist eine Berechnungsanweisung, während eine Funktion eine vordefinierte Formel ist. Benutzer können Konstanten, Operatoren, Werte, die aus anderen Zellen referenziert werden, sowie Funktionen verwenden, um Formeln zu erstellen oder direkt auf Funktionen in einer Zelle zu verweisen und Berechnungen durchzuführen. In diesem Artikel werden wir Ihnen zeigen, wie Sie mithilfe von [Free Spire.XLS for Java](https://www.e-iceblue.com/Introduce/xls-for-java.html) Excel-Tabellenkalkulationen erstellen, Formeln und Funktionen einfügen und lesen können.

- **Einfügen von Formeln und Funktionen**
- **Lesen von Formeln und Funktionen**

## 【Hinzufügen von Abhängigkeiten】
Für diese Methode benötigen Sie das kostenlose Free Spire.XLS for Java. Importieren Sie zuerst die JAR-Datei.
### 1. Maven
Wenn Sie Maven verwenden, können Sie die JAR-Datei einfach in Ihre Anwendung importieren, indem Sie den folgenden Code zu Ihrer pom.xml-Datei hinzufügen:
```xml
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls.free</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>
```

### 2. Herunterladen der JAR-Datei von der offiziellen Website
Laden Sie zuerst das ZIP-Archiv von der [offiziellen Website von Free Spire.XLS for Java](https://www.e-iceblue.com/Download/xls-for-java.html) herunter. Entpacken Sie das ZIP-Archiv und importieren Sie die Spire.Xls.jar-Datei aus dem lib-Ordner als Abhängigkeit in Ihr Projekt.

## Einfügen von Formeln und Funktionen
Der detaillierte Prozess zum Einfügen von Formeln und Funktionen in ein Arbeitsblatt mit der Methode **Worksheet.getCellRange().setFormula()** von Free Spire.XLS for Java lautet wie folgt:
- Erstellen Sie ein Objekt der Klasse **Workbook**.
- Verwenden Sie die Methode **Workbook.getWorksheets().get()**, um das erste Arbeitsblatt abzurufen.
- Schreiben Sie Daten in die Zellen und legen Sie deren Formatierung fest.
- Verwenden Sie die Methode **Worksheet.getCellRange().setFormula()**, um Formeln und Funktionen in bestimmte Zellen einzufügen.
- Verwenden Sie die Methode **Workbook.saveToFile()**, um die Arbeitsmappe zu speichern.

**Java-Code**
```java
import com.spire.xls.*;

public class InsertFormulas {
    public static void main(String[] args) {

        // Erstellen Sie ein Workbook-Objekt
        Workbook workbook = new Workbook();

        // Holen Sie sich das erste Arbeitsblatt
        Worksheet sheet = workbook.getWorksheets().get(0);

        // Deklarieren Sie zwei Variablen: currentRow und currentFormula
        int currentRow = 1;
        String currentFormula = null;

        // Setzen Sie die Spaltenbreite
        sheet.setColumnWidth(1, 32);
        sheet.setColumnWidth(2, 16);

        // Schreiben Sie Daten in Zellen
        sheet.getCellRange(currentRow, 1).setValue("Testdaten");
        sheet.getCellRange(currentRow, 2).setNumberValue(1);
        sheet.getCellRange(currentRow, 3).setNumberValue(2);
        sheet.getCellRange(currentRow, 4).setNumberValue(3);
        sheet.getCellRange(currentRow, 5).setNumberValue(4);
        sheet.getCellRange(currentRow, 6).setNumberValue(5);

        // Schreiben Sie Text in Zellen
        currentRow += 2;
        sheet.getCellRange(currentRow, 1).setValue("Formel");
        sheet.getCellRange(currentRow, 2).setValue("Ergebnis");

        // Setzen Sie das Zellformat
        CellRange range = sheet.getCellRange(currentRow, 1, currentRow, 2);
        range.getStyle().getFont().setBold(true);
        range.getStyle().setKnownColor(ExcelColors.LightGreen1);
        range.getStyle().setFillPattern(ExcelPatternType.Solid);
        range.getStyle().getBorders().getByBordersLineType(BordersLineType.EdgeBottom).setLineStyle(LineStyleType.Medium);

        // Arithmetische Operationen
        currentFormula = "=1/2+3*4";
        sheet.getCellRange(++currentRow, 1).setText("'" + currentFormula);
        sheet.getCellRange(currentRow, 2).setFormula(currentFormula);

        // Datumsfunktionen
        currentFormula = "=TODAY()";
        sheet.getCellRange(++currentRow, 1).setText("'" + currentFormula);
        sheet.getCellRange(currentRow, 2).setFormula(currentFormula);
        sheet.getCellRange(currentRow, 2).getStyle().setNumberFormat("YYYY/MM/DD");

        // Zeitfunktionen
        currentFormula = "=NOW()";
        sheet.getCellRange(++currentRow, 1).setText("'" + currentFormula);
        sheet.getCellRange(currentRow, 2).setFormula(currentFormula);
        sheet.getCellRange(currentRow, 2).getStyle().setNumberFormat("H:MM AM/PM");

        // IF-Funktion
        currentFormula = "=IF(B1=5,\"Ja\",\"Nein\")";
        sheet.getCellRange(++currentRow, 1).setText("'" + currentFormula);
        sheet.getCellRange(currentRow, 2).setFormula(currentFormula);

        // PI-Funktion
        currentFormula = "=PI()";
        sheet.getCellRange(++currentRow, 1).setText("'" + currentFormula);
        sheet.getCellRange(currentRow, 2).setFormula(currentFormula);

        // Trigonometrische Funktionen
        currentFormula = "=SIN(PI()/6)";
        sheet.getCellRange(++currentRow, 1).setText("'" + currentFormula);
        sheet.getCellRange(currentRow, 2).setFormula(currentFormula);

        // Zählfunktionen
        currentFormula = "=Count(B1:F1)";
        sheet.getCellRange(++currentRow, 1).setText("'" + currentFormula);
        sheet.getCellRange(currentRow, 2).setFormula(currentFormula);

        // MAX-Funktion
        currentFormula = "=MAX(B1:F1)";
        sheet.getCellRange(++currentRow, 1).setText("'" + currentFormula);
        sheet.getCellRange(currentRow, 2).setFormula(currentFormula);

        // Durchschnittsfunktion
        currentFormula = "=AVERAGE(B1:F1)";
        sheet.getCellRange(++currentRow, 1).setText("'" + currentFormula);
        sheet.getCellRange(currentRow, 2).setFormula(currentFormula);

        // SUM-Funktion
        currentFormula = "=SUM(B1:F1)";
        sheet.getCellRange(++currentRow, 1).setText("'" + currentFormula);
        sheet.getCellRange(currentRow, 2).setFormula(currentFormula);

        // Speichern Sie das Workbook
        workbook.saveToFile("FormelnEinfügen.xlsx", FileFormat.Version2013);
    }
}
```

## Lesen von Formeln und Funktionen
Mit der Methode **CellRange.hasFormula()** können Sie überprüfen, ob eine Zelle eine Formel enthält, und mit der Methode **CellRange.getFormula()** können Sie die Formel abrufen. Hier sind die detaillierten Schritte:
- Erstellen Sie ein Objekt der Klasse **Workbook**.
- Verwenden Sie die Methode **Workbook.loadFromFile()**, um eine Excel-Arbeitsmappe zu laden.
- Verwenden Sie die Methode **Workbook.getWorksheets().get()**, um das Arbeitsblatt abzurufen.
- Iterieren Sie über die Zellen im Arbeitsblatt.
- Verwenden Sie die Methode **CellRange.hasFormula()**, um zu überprüfen, ob eine Zelle eine Formel enthält. Wenn eine Formel enthalten ist, verwenden Sie die Methode **CellRange.getFormula()**, um die Formel abzurufen und auszugeben.
- Verwenden Sie die Methode **Workbook.saveToFile()**, um die Arbeitsmappe zu speichern.

**Java-Code**
```java
import com.spire.xls.CellRange;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class readFormulas {

    public static void main(String[] args) {

        // Erstellen eines Workbook-Objekts
        Workbook workbook = new Workbook();

        // Excel-Datei laden
        workbook.loadFromFile("Formeln einfügen.xlsx");

        // Das erste Arbeitsblatt abrufen
        Worksheet sheet = workbook.getWorksheets().get(0);

        // Schleife über die Zellen in B1:B13
        for (Object cell: sheet.getCellRange("B1:B13")) {
            CellRange cellRange = (CellRange)cell;

            // Überprüfen, ob die Zelle eine Formel enthält
            if (cellRange.hasFormula()) {

                // Formel ausgeben
                String certainCell = String.format("In Zelle [%d, %d] befindet sich eine Formel.", cellRange.getRow(), cellRange.getColumn());
                System.out.println(certainCell + cellRange.getFormula());
            }
        }
    }
}
```

> **Formeln und Funktionen eignen sich gut zur Verarbeitung von Daten in Excel. Excel bietet auch andere Tools wie Diagramme und Grafiken, die bei der Datenverarbeitung hilfreich sind. Wenn Sie mehr über die Verarbeitung von Excel-Daten erfahren möchten, schauen Sie sich das [Spire.XLS for Java Tutorial](https://www.e-iceblue.com/Tutorials/Java/Spire.XLS-for-Java/Program-Guide/Spire.XLS-Program-Guide-Content-for-Java.html) an.**