EXCEL 工具 在 Java 中讀取 Excel 文件(教程) Jordi Bardia 更新日期:6月 22, 2025 Download IronXL NuGet 下載 DLL 下載 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article 什麼是 Excel? 微軟 Excel 工作簿是一款基於電子表格的軟體,允許使用者有效地組織和儲存數據。 它以表格形式存儲和組織數據,即使用行和列。 Excel 電子表格中的單元格是存放數據的方框,可以使用不同的樣式、格式和公式進行操作。 如何在 Java 中讀取 Excel 文件? 有時候讀取 Excel 文件可能會比較複雜。 在 Java 中讀取 Excel 文件與在 Java 中讀取 Word 文件略有不同,因為 Excel 的單元格特性。 JDK不提供直接的 API 來讀寫 Microsoft Excel 文件。 相反,我們必須依賴第三方庫 Apache POI。 Apache POI 庫 POI 代表 "Poor Obfuscation Implementation"。 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 文件。 class="content-img-align-center"> class="center-image-wrapper"> class="content__image-caption">下載 Apache POI JAR 文件 當你下載 ZIP 文件後,你需要解壓它,並將以下 JAR 文件添加到你的項目類路徑中。 這在下面的 從 Excel 文件讀取 中解釋。 class="content-img-align-center"> class="center-image-wrapper"> class="content__image-caption">將 Apache POI Jar 文件添加到 Java 類路徑 注意:同時複製 lib 和 ooxml-lib 中的檔案以及其他文件。 POI 中的類和接口 以下是支援的 XLS 和 XLSX 文件格式的類,這些類可以使用: class="content-img-align-center"> class="center-image-wrapper"> class="content__image-caption">Apache POI 類 以下是在 POI 中用於在 Java 中讀取 XLS 和 XLSX 文件的不同 Java 接口和類的清單: Workbook 接口由 HSSFWorkbook 和 XSSFWorkbook 類實現: HSSFWorkbook:這是一個對 XLS 文件的類表示。 XSSFWorkbook:這是一個對 XLSX 文件的類表示。 Sheet 接口由 HSSFSheet 和 XSSFSheet 類實現: HSSFSheet:這是一個表示 XLS 文件中的工作表的類。 XSSFSheet:這是一個表示 XLSX 文件中的工作表的類。 Row 接口由 HSSFRow 和 XSSFRow 類實現: HSSFRow:這是一個表示 XLS 文件工作表中行的類。 XSSFRow:這是一個表示 XLSX 文件工作表中行的類。 Cell 接口由 HSSFCell 和 XSSFCell 類實現: HSSFCell:這是一個表示 XLS 文件行中的單元格的類。 XSSFCell:這是一個表示 XLSX 文件行中的單元格的類。 從 Excel 文件中讀取 在我們的示例中,我們將在 Java 中讀取以下 Excel 文件: class="content-img-align-center"> class="center-image-wrapper"> class="content__image-caption">將要讀取的 Excel 文件 在 Java 中讀取 Excel 文件的步驟 使用任何 Java IDE 創建一個 Java 項目。我們將使用 Netbeans 來完成此項目。 接下來,在項目中創建一個 lib 資料夾。 然後將下載的 JAR 文件添加到在上一步創建的 lib 資料夾中。 設置 Class-Path:右鍵點擊項目文件夾 > 構建路徑 > 添加外部 JAR 文件 > 選擇以上所有 JAR 文件 > 應用並關閉。 現在,我們來創建一個名為 ReadExcelFileDemo 的類文件。 創建一個名為 "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 { // Obtain 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 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 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(); } // Closing the workbook to free resources wb.close(); } } 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 { // Obtain 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 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 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(); } // Closing the workbook to free resources wb.close(); } } JAVA 輸出: Id Names 1 Zeeshan 2 Shoaib 3 Umar 4 Rizwan 5 Ahsan Id Names 1 Zeeshan 2 Shoaib 3 Umar 4 Rizwan 5 Ahsan SHELL 讀取 XLSX 文件的步驟與讀取 XLS 文件相同,除了以下兩個主要問題: 首先,將文件格式更改為 .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); // Iterating over rows using iterator Iterator<Row> itr = sheet.iterator(); while (itr.hasNext()) { Row row = itr.next(); // Iterating over each column in a row Iterator<Cell> cellIterator = row.cellIterator(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch (cell.getCellType()) { case 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 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(""); } // Closing the workbook to free resources wb.close(); } catch (Exception e) { e.printStackTrace(); } } } 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); // Iterating over rows using iterator Iterator<Row> itr = sheet.iterator(); while (itr.hasNext()) { Row row = itr.next(); // Iterating over each column in a row Iterator<Cell> cellIterator = row.cellIterator(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch (cell.getCellType()) { case 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 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(""); } // Closing the workbook to free resources wb.close(); } catch (Exception e) { e.printStackTrace(); } } } JAVA 輸出: Id Names 1 Zeeshan 2 Shoaib 3 Umar 4 Rizwan 5 Ahsan Id Names 1 Zeeshan 2 Shoaib 3 Umar 4 Rizwan 5 Ahsan SHELL IronXL C# 庫 IronXL 是一個獨立的 .NET 庫,能夠讓 C# 開發人員讀取和編輯 Microsoft Excel 文件。 它既不需要安裝 Microsoft Excel,也不依賴於 Interop。 使用 IronXL,開發人員可以輕鬆進行所有與 Excel 有關的計算,只需撰寫少量代碼,且操作快速。 這可以用於例如兩個單元格相加、計算列的總和、向 Excel 表格中添加整列、向 Excel 表格中添加整行、單行和多行列計算總和,或者通過 IronXL 的 有用功能輕鬆完成的其他許多任務。 IronXL 完全支持 .NET Framework、.NET Core、Mobile、Xamarin、Azure Linux 和 macOS。 IronXL 功能集 加載、讀取和編輯來自 XLS/XLSX/CSV/TSV 的數據。 保存和導出為 XLS/XLSX/CSV/TSV/JSON。 System.Data 對象 — 將 Excel 電子表格作為 System.Data.DataSet 和 System.Data.DataTable 對象工作。 公式——支持 Excel 公式。 範圍 — ["A1:B10"] 語法易於使用。 排序 — 排序行、列和範圍。 樣式 — 視覺樣式、字體和字體大小、背景圖案、邊框、對齊和數字格式。 下面是使用 IronXL 在 C# 中讀取 Excel 文件的代碼範例: using IronXL; using System.Linq; public class ExcelReaderExample { public static void Main(string[] args) { // 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; public class ExcelReaderExample { public static void Main(string[] args) { // 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 Public Class ExcelReaderExample Public Shared Sub Main(ByVal args() As String) ' Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV Dim workbook As WorkBook = WorkBook.Load("test.xlsx") Dim sheet As WorkSheet = workbook.WorkSheets.First() ' Select cells easily in Excel notation and return the calculated value Dim 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 End Sub End Class $vbLabelText $csharpLabel 使用 IronXL 能使開發者的工作更加容易。 其簡單且易於使用的代碼使軟件在處理 Excel 文件時更不易出現錯誤。 下載 IronXL 並在你的項目中使用它。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 更新日期 9月 10, 2025 如何在 C# 中查看 PowerPoint 文件 在本文中,我們將創建不需安裝 MS PowerPoint 檢視器的 C# PowerPoint 檢視器。 閱讀更多 更新日期 6月 22, 2025 如何使用 C# 從模板創建 PowerPoint 在這篇文章中,我們將看看如何使用 C# 從範本創建 PowerPoint 閱讀更多 更新日期 6月 22, 2025 .NET Regex 測試器測試您的正則表達式模式 本文深入探討 .NET Regex Tester 的功能,提供見解和使用示例,並與 IronXL 完美結合 閱讀更多 .NET Regex 測試器測試您的正則表達式模式如何在 Excel 中切換欄位
更新日期 6月 22, 2025 .NET Regex 測試器測試您的正則表達式模式 本文深入探討 .NET Regex Tester 的功能,提供見解和使用示例,並與 IronXL 完美結合 閱讀更多