EXCEL-WERKZEUGE

Wie man Excel-Dateien in Java liest (Tutorial)

Veröffentlicht 23. Februar 2023
Teilen Sie:

Was ist Excel?

Microsoft Excel Workbook ist eine auf Tabellenkalkulationen basierende Software, die es ihren Benutzern ermöglicht, Daten auf effiziente Weise zu organisieren und zu speichern. Es speichert und organisiert die Daten in tabellarischer Form, d.h. mit Zeilen und Spalten. Die Zelle in einer Excel-Tabelle ist ein Feld, das Daten enthält und mit verschiedenen Stilen, Formatierungen und Formeln bearbeitet werden kann.

Wie kann man Excel-Dateien in Java lesen?

Das Lesen einer Excel-Datei kann mitunter kompliziert sein. Das Lesen von Excel-Dateien in Java unterscheidet sich auch ein wenig vom Lesen von Word-Dateien in Java, weil Excel Zellen hat. Das JDK bietet keine direkte API zum Lesen oder Schreiben von Microsoft Excel-Dokumenten. Stattdessen müssen wir uns auf die Drittanbieter-Bibliothek Apache POI verlassen.

Apache POI-Bibliothek

POI steht für "Poor Obfuscation Implementation" Apache POI ist eine quelloffene Java-Bibliothek, die zum Lesen und Schreiben von Microsoft-Dokumenten entwickelt wurde. Es bietet eine Möglichkeit, verschiedene Dateiformate auf der Grundlage von Microsoft Office zu erstellen und zu manipulieren. Mit Apache POI sollte man in der Lage sein, eine Reihe von Microsoft Office-Dateiformaten zu erstellen, zu ändern und anzuzeigen/zu lesen.

Herunterladen und Installieren der Apache POI-Bibliothek

Zu Beginn laden wir die neueste Version der POI-JARs herunter. Navigieren Sie zu http://poi.apache.org/download.html und laden Sie die neueste ZIP-Datei herunter, die die Java-API zum Lesen einer Excel-Datei in Java enthält.

Lesen von Excel-Dateien in Java, Abbildung 1: Herunterladen einer binären Verteilungsdatei

Apache POI JAR-Dateien herunterladen

Wenn Sie die ZIP-Datei herunterladen, müssen Sie sie entpacken und die folgenden JAR-Dateien zum Klassenpfad Ihres Projekts hinzufügen. Dies wird im folgenden Abschnitt Lesen aus einer Excel-Datei erläutert.

Wie man Excel-Dateien in Java liest, Abbildung 2: JAR-Dateien

Fügen Sie die Apache POI Jar-Dateien zum Java-Klassenpfad hinzu

Hinweis: Kopieren Sie auch die Dateien von lib und ooxml-lib zusammen mit den anderen Dateien.

Klassen und Schnittstellen in POI

Im Folgenden sind die unterstützten Klassen für die Dateiformate XLS und XLSX aufgeführt, die verwendet werden können:

Wie man Excel-Dateien in Java liest, Abbildung 3: Apache POI-Klassen

Apache POI-Klassen

Im Folgenden finden Sie eine Liste der verschiedenen Java-Schnittstellen und -Klassen in POI zum Lesen von XLS- und XLSX-Dateien in Java:

Die Workbook-Schnittstelle wird von den Klassen HSSFWorkbook und XSSFWorkbook implementiert.

  • HSSFWorkbook: Dies ist eine Klassendarstellung der XLS-Datei.
  • XSSFWorkbook: Dies ist eine Klassendarstellung der XLSX-Datei.

    Die Sheet-Schnittstelle wird von den Klassen "HSSFSheet" und "XSSFSheet" implementiert.

  • HSSFSheet: Dies ist eine Klasse, die ein Blatt in einer XLS-Datei darstellt.
  • XSSFSheet: Dies ist eine Klasse, die ein Blatt in einer XLSX-Datei darstellt.

    Die Schnittstelle Row wird von den Klassen "HSSFRow" und "XSSFRow" implementiert.

  • HSSFRow: Dies ist eine Klasse, die eine Zeile in einem Blatt einer XLS-Datei darstellt.
  • XSSFRow: Dies ist eine Klasse, die eine Zeile in einem Blatt einer XLSX-Datei darstellt.

    Die Zellschnittstelle wird von den Klassen "HSSFCell" und "XSSFCell" implementiert.

  • HSSFCell: Dies ist eine Klasse, die eine Zelle in einer Zeile einer XLS-Datei darstellt.
  • XSSFCell: Dies ist eine Klasse, die eine Zelle in einer Zeile einer XLSX-Datei darstellt.

Lesen aus einer Excel-Datei

Für unser Beispiel werden wir die folgende Excel-Datei in Java lesen:

Wie man Excel-Dateien in Java liest, Abbildung 4: Die zu lesende Excel-Datei

Die Excel-Datei, die gelesen werden soll

Schritte zum Lesen von Excel-Dateien in Java

  1. Erstellen Sie ein Java-Projekt mit einer beliebigen Java-IDE. Wir werden Netbeans für dieses Projekt verwenden.

  2. Als Nächstes erstellen Sie einen lib-Ordner im Projekt.

  3. Fügen Sie dann die heruntergeladenen JAR-Dateien zu dem im vorherigen Schritt erstellten lib-Ordner hinzu.

  4. Legen Sie den "Class-Path" fest, indem Sie mit der rechten Maustaste auf den Projektordner klicken > Build Path > Add External JARs files > wählen Sie alle oben genannten JAR-Dateien aus > Apply and close.

  5. Lassen Sie uns nun eine Klassendatei mit dem Namen ReadExcelFileDemo erstellen.

  6. Erstellen Sie eine Excel-Datei mit dem Namen "studentdata.xls" und schreiben Sie die oben genannten Daten oder beliebige Daten hinein.

    Im Folgenden finden Sie ein Codebeispiel für das Lesen von Excel-Dateien in Java:

import java.io.File;  
import java.io.FileInputStream;  
import java.io.IOException;  
import org.apache.poi.hssf.usermodel.HSSFSheet;  
import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
import org.apache.poi.ss.usermodel.Cell;  
import org.apache.poi.ss.usermodel.FormulaEvaluator;  
import org.apache.poi.ss.usermodel.Row;  

public class ReadExcelFileDemo  {  
    public static void main(String args []) throws IOException  {  
        //obtaining input bytes from a file  
        FileInputStream fis=new FileInputStream(new File("C:\\demo\\studentdata.xls"));  
        //creating workbook instance that refers to .xls file  
        HSSFWorkbook wb=new HSSFWorkbook(fis);   
        //creating a Sheet object to retrieve the object  
        HSSFSheet sheet=wb.getSheetAt(0);  
        //evaluating cell type   
        FormulaEvaluator formulaEvaluator=wb.getCreationHelper().createFormulaEvaluator();  
        for(Row row: sheet) {  
            for(Cell cell: row) {
                switch(formulaEvaluator.evaluateInCell(cell).getCellType()) {  
                    case Cell.CELL_TYPE_NUMERIC: //field that represents numeric cell type  
                        //getting the value of the cell as a number  
                        System.out.print(cell.getNumericCellValue()+ "\t\t");   
                        break;  
                    case Cell.CELL_TYPE_STRING: //field that represents string cell type  
                        //getting the value of the cell as a string  
                        System.out.print(cell.getStringCellValue()+ "\t\t");  
                        break;
                }
            }
            System.out.println();  
        }
    }
}
JAVA

Ausgang:

IdNames
1Zeeshan
2Shoaib
3Umar
4Rizwan
5Ahsan

Die Schritte sind die gleichen wie beim Lesen von xlsx-Dateien, mit Ausnahme der beiden folgenden Hauptpunkte:

  • Ändern Sie zunächst das Dateiformat in .xlsx. Es kann die gleiche Datei "studentdata" verwendet werden, allerdings mit der Erweiterung .xlsx.
  • Zweitens gibt es einen Unterschied in der Art, wie wir Java Apache POI importieren. Der Code lautet wie folgt:
import java.io.File;  
import java.io.FileInputStream;  
import java.util.Iterator;  
import org.apache.poi.ss.usermodel.Cell;  
import org.apache.poi.ss.usermodel.Row;  
import org.apache.poi.xssf.usermodel.XSSFSheet;  
import org.apache.poi.xssf.usermodel.XSSFWorkbook;  

public class XLSXReaderExample  {

    public static void main(String [] args) {  
        try {  
            File file = new File("C:\\demo\\studentdata.xlsx");  
            FileInputStream fis = new FileInputStream(file);  
            //creating Workbook instance that refers to .xlsx file  
            XSSFWorkbook wb = new XSSFWorkbook(fis);   
            XSSFSheet sheet = wb.getSheetAt(0); 
            Iterator<Row> itr = sheet.iterator();
            while (itr.hasNext()) {  
                Row row = itr.next();  
                Iterator<Cell> cellIterator = row.cellIterator();   //iterating over each column  
                while (cellIterator.hasNext()) {  
                    Cell cell = cellIterator.next();  
                    switch (cell.getCellType()) {  
                        case Cell.CELL_TYPE_NUMERIC: //field that represents numeric cell type  
                            //getting the value of the cell as a number  
                            System.out.print(cell.getNumericCellValue() + "\t\t");   
                            break;
                        case Cell.CELL_TYPE_STRING: //field that represents string cell type  
                            //getting the value of the cell as a string  
                            System.out.print(cell.getStringCellValue() + "\t\t");  
                            break;
                    }
                }
                System.out.println("");  
            }  
        } catch(Exception e) {  
            e.printStackTrace();  
        }
    }
}
JAVA

Ausgang:

IdNames
1Zeeshan
2Shoaib
3Umar
4Rizwan
5Ahsan

Die IronXL C# Bibliothek

IronXL ist eine eigenständige .NET-Bibliothek, die das Lesen und Bearbeiten von Microsoft Excel-Dokumenten mit C# erleichtert. Es erfordert weder, dass Microsoft Excel installiert ist, noch ist es von Interop abhängig.

Mit IronXL können Entwickler alle Excel-bezogenen Berechnungen mühelos durchführen, indem sie einfach ein paar Zeilen Code schreiben, und das mit schneller Leistung. Dies kann für Aufgaben wie das Hinzufügen von zwei Zellen, das Berechnen der Gesamtsumme einer Spalte, das Hinzufügen einer ganzen Spalte zu einer Excel-Tabelle, das Hinzufügen einer ganzen Zeile zu einer Excel-Tabelle, ein- und mehrzeilige Spaltensummen oder viele andere Aufgaben sein, die durch IronXLshilfreiche Funktionen.

IronXL unterstützt vollständig das .NET-Framework, .NET Core, Mobile, Xamarin, Azure Linux und MacOS.

IronXL Funktionsumfang

  • Laden, lesen und bearbeiten Sie Daten aus XLS/XLSX/CSV/TSV.
  • Speichern und Exportieren in XLS/XLSX/CSV/TSV/JSON.
  • system.Data"-Objekte - Arbeit mit Excel-Arbeitsblättern als System.Data.DataSet"- und System.Data.DataTable"-Objekte.
  • Formeln - arbeitet mit Excel-Formeln.
  • Baureihen - ["A1:B10"] die Syntax ist einfach zu verwenden.
  • Sortieren - Zeilen, Spalten und Bereiche sortieren.
  • Gestaltung - visuelle Stile, Schriftart und Schriftgröße, Hintergrundmuster, Rahmen, Ausrichtung und Zahlenformate.

    Nachfolgend finden Sie ein Codebeispiel für das Lesen einer Excel-Datei in C# mit IronXL:

using IronXL;
using System.Linq;

//Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();

//Select cells easily in Excel notation and return the calculated value
int cellValue = sheet ["A2"].IntValue;

// Read from Ranges of cells elegantly.
foreach (var cell in sheet ["A2:A10"]) {
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
using IronXL;
using System.Linq;

//Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();

//Select cells easily in Excel notation and return the calculated value
int cellValue = sheet ["A2"].IntValue;

// Read from Ranges of cells elegantly.
foreach (var cell in sheet ["A2:A10"]) {
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
Imports IronXL
Imports System.Linq

'Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
Private workbook As WorkBook = WorkBook.Load("test.xlsx")
Private sheet As WorkSheet = workbook.WorkSheets.First()

'Select cells easily in Excel notation and return the calculated value
Private cellValue As Integer = sheet ("A2").IntValue

' Read from Ranges of cells elegantly.
For Each cell In sheet ("A2:A10")
	Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
VB   C#

Die Arbeit mit IronXL macht die Arbeit eines Entwicklers viel einfacher. Durch den einfachen und benutzerfreundlichen Code ist die Software bei der Arbeit mit Excel-Dateien weniger fehleranfällig.

IronXL herunterladen und verwenden Sie es noch heute für Ihre Projekte.

< PREVIOUS
Testen Sie Ihre Regex-Muster mit .NET Regex Tester
NÄCHSTES >
Umschalten von Spalten in Excel

Sind Sie bereit, loszulegen? Version: 2024.12 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 1,132,445 Lizenzen anzeigen >