EXCEL 工具 在 Java 中讀取 Excel 文件(教程) Jordi Bardia 更新:2026年1月18日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 什麼是Excel? Microsoft Excel活頁簿是一個基於試算表的軟體,允許用戶高效地組織和儲存資料。 它以表格形式儲存和組織資料,即使用行和列。 Excel試算表中的儲存格是容納資料的方框,可以使用不同的樣式、格式和公式進行操作。 如何在Java中讀取Excel文件? 有時候讀取Excel文件可能會很複雜。 由於Excel的儲存格,在Java中讀取Excel文件與讀取Word文件略有不同。 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文件。 下載Apache POI JAR文件 下載ZIP文件後,您需要解壓縮它並將以下JAR文件添加到您的專案classpath。 這在下面的從Excel文件讀取中有解釋。 將Apache POI Jar文件添加到Java的classpath 注意:還要將ooxml-lib中的文件一起複製。 POI中的類別和介面 以下是支援的XLS和XLSX文件格式的類別,可以使用: Apache POI類別 以下是POI中用於在Java中讀取XLS和XLSX文件的不同Java介面和類別的列表: Workbook介面由XSSFWorkbook類別實現: HSSFWorkbook:這是一個XLS文件的類別表示。 XSSFWorkbook:這是一個XLSX文件的類別表示。 Sheet介面由XSSFSheet類別實現: HSSFSheet:這是一個表示XLS文件中的工作表的類別。 XSSFSheet:這是一個表示XLSX文件中的工作表的類別。 Row介面由XSSFRow類別實現: HSSFRow:這是一個表示XLS文件工作表中一行的類別。 XSSFRow:這是一個表示XLSX文件工作表中一行的類別。 Cell介面由XSSFCell類別實現: HSSFCell:這是一個表示XLS文件行中儲存格的類別。 XSSFCell:這是一個表示XLSX文件行中儲存格的類別。 從Excel文件讀取 在這個範例中,我們將在Java中讀取以下Excel文件: 將被讀取的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文件的步驟相同,除了以下兩個主要點: 首先,將文件格式更改為.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、移動端、Xamarin、Azure Linux和macOS。 IronXL 功能集 載入、讀取和編輯XLS/XLSX/CSV/TSV的資料。 保存和導出為XLS/XLSX/CSV/TSV/JSON。 System.Data 對象 — 作為System.Data.DataTable對象處理Excel試算表。 公式 — 处理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); } } } $vbLabelText $csharpLabel 使用IronXL使開發者的工作變得更加輕鬆。 其簡單易用的代碼使得與Excel文件工作時,軟體更不易出現錯誤。 下載IronXL並立即與您的專案一起使用。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 更新2026年1月18日 如何在 C# 中查看 PowerPoint 文件 在本文中,我們將創建不需安裝 MS PowerPoint 檢視器的 C# PowerPoint 檢視器。 閱讀更多 更新2026年1月18日 如何使用 C# 從模板創建 PowerPoint 在這篇文章中,我們將看看如何使用 C# 從範本創建 PowerPoint 閱讀更多 更新2025年6月22日 .NET Regex 測試器測試您的正則表達式模式 本文深入探討 .NET Regex Tester 的功能,提供見解和使用示例,並與 IronXL 完美結合 閱讀更多 .NET Regex 測試器測試您的正則表達式模式如何在 Excel 中切換欄位