EXCEL 工具

如何在 Java 中讀取 Excel 檔案(教程)

發佈 2023年2月23日
分享:

什麼是 Excel?

Microsoft Excel 工作簿是一款基於電子表格的軟體,讓使用者能夠以高效的方式組織和存儲數據。 它以表格形式儲存和組織數據,即使用行和列。 在 Excel 試算表中的儲存格是用來承載數據的方格,可以應用不同的樣式、格式和公式進行操作。

如何在 Java 中讀取 Excel 文件?

有時候,讀取 Excel 文件可能會很複雜。 在 Java 中讀取 Excel 文件與讀取 Word 文件稍有不同,因為 Excel 有儲存格。 JDK 不提供直接的 API 用來讀取或寫入 Microsoft Excel 文件。 相反地,我們必須依賴第三方庫 Apache POI

Apache POI 庫

POI 代表“劣質混淆實施”。Apache POI 是一個開源的 Java 庫,旨在讀取和寫入 Microsoft 文件。 它提供了一種基於 Microsoft Office 來創建和操作各種文件格式的方法。使用 Apache POI,應該能夠對一系列 Microsoft Office 文件格式執行創建、修改和顯示/讀取操作。

下載並安裝 Apache POI 庫

首先,我們將下載最新版本的 POI JAR 檔案。 導航至 http://poi.apache.org/download.html 下載最新的 ZIP 檔案,內含 Java API,用於在 Java 中讀取 Excel 檔案。

如何在 Java 中读取 Excel 文件,圖1:下載二進制分發文件

下載 Apache POI JAR 文件

當您下載 ZIP 檔案時,您需要將其解壓縮並將以下 JAR 檔案添加到項目的 classpath。 這在下面的從 Excel 文件讀取中進行了說明。

如何在 Java 中讀取 Excel 文件,圖2:JAR 文件

將 Apache POI Jar 文件添加到 Java 類路徑

注意:請同時複製來自lib和ooxml-lib的文件與其他文件。

POI 中的類別和介面

以下是支援的 XLS 和 XLSX 檔案格式類別,可供使用:

如何在 Java 中讀取 Excel 文件,圖 3:Apache POI 類別

Apache POI 類別

以下是 POI 中用於在 Java 中讀取 XLSXLSX 文件的不同 Java 介面和類別清單:

Workbook 介面由 HSSFWorkbookXSSFWorkbook 類別實現。

  • HSSFWorkbook:這是 XLS 文件的類表示。
  • XSSFWorkbook:這是一個XLSX文件的類表示。

    HSSFSheetXSSFSheet 類別實作了 Sheet 介面。

  • HSSFSheet:這是一個代表 XLS 文件中工作表的類別。
  • XSSFSheet:這是一個代表 XLSX 文件中的工作表的類。

    HSSFRowXSSFRow 類別實現了 Row 介面。

  • HSSFRow:這是表示 XLS 文件中工作表內一行的類別。
  • XSSFRow:這是一個代表 XLSX 檔案中工作表列的類別。

    HSSFCellXSSFCell 類別實現了 Cell 介面。

  • HSSFCell:這是一個代表XLS文件中某一行儲存格的類別。
  • XSSFCell:這是一個代表XLSX文件中行中單元格的類別。

從 Excel 文件讀取

在我們的範例中,我們將在 Java 中讀取以下 Excel 檔案:

如何讀取 Java 中的 Excel 文件,圖 4:要讀取的 Excel 文件

將會被讀取的 Excel 文件

在 Java 中讀取 Excel 文件的步驟

  1. 使用任意 Java IDE 創建一個 Java 專案。我們將在這個專案中使用 Netbeans。

  2. 接下來,在專案中建立一個 lib 資料夾。

  3. 然後,將下載的 JAR 檔案添加到前一步驟中創建的 lib 資料夾中。

  4. 通過右鍵點擊項目文件夾 > 構建路徑 > 添加外部 JAR 文件 > 選擇以上所有 JAR 文件 > 應用並關閉來設置 Class-Path

  5. 現在,讓我們創建一個名為ReadExcelFileDemo的類文件。

  6. 創建一個名為「studentdata.xls」的 Excel 檔案,然後將上述資料或任何資料寫入其中。

    以下是使用 Java 讀取 Excel 文件的代碼示例:

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

輸出:

IdNames
1Zeeshan
2Shoaib
3Umar
4Rizwan
5Ahsan

除了以下兩個主要點,讀取xlsx文件的步驟與之前相同:

  • 首先,將檔案格式更改為.xlsx。 相同的檔案「studentdata」可以使用,但是需要加上.xlsx副檔名。
  • 其次,我們在匯入 Java Apache POI 時有差異。 代碼如下:
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

輸出:

IdNames
1Zeeshan
2Shoaib
3Umar
4Rizwan
5Ahsan

IronXL C# 庫

IronXL是一個獨立的 .NET 函式庫,可以用 C# 讀取和編輯 Microsoft Excel 文件。 它既不需要安裝 Microsoft Excel,也不依賴於 Interop。

使用 IronXL,開發者只需撰寫幾行程式碼即可輕鬆執行所有與 Excel 相關的計算,並且具備快速的性能。 這可以用於添加兩個單元格、計算一列的總數、將整個列添加到 Excel 表、將整個行添加到 Excel 表、單行和多行列求和或通過 IronXL 使許多其他任務變得簡單。有用的功能.

IronXL完全支援 .NET Framework、.NET Core、行動裝置、Xamarin、Azure Linux 和 MacOS。

IronXL 功能集

  • 載入、讀取和編輯 XLS/XLSX/CSV/TSV 的數據。
  • 保存並導出為XLS/XLSX/CSV/TSV/JSON。
  • System.Data 物件 — 使用 Excel 試算表作為 System.Data.DataSetSystem.Data.DataTable 物件。
  • 公式 — 支援 Excel 公式。
  • 範圍 — ["A1:B10"]語法易於使用。
  • 排序 — 排列行、列和範圍。
  • 樣式設定—視覺樣式、字體和字體大小、背景圖案、邊框、對齊和數字格式。

    以下是使用IronXL在C#中讀取Excel文件的代碼示例:

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#

使用 IronXL 讓開發人員的工作變得更加輕鬆。 它簡單易用的代碼使軟體在處理 Excel 文件時更不容易出現錯誤。

下載 IronXL並在今天將其用於您的專案。

< 上一頁
測試您的正則表達式模式與 .NET Regex Tester
下一個 >
如何在 Excel 中切換欄位

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 1,136,001 查看許可證 >