在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
Microsoft Excel 工作簿是一款基於電子表格的軟體,可讓使用者以高效的方式組織和存儲數據。它以表格式形式存儲和組織數據,即使用行和列。Excel 電子表格中的儲存格是存放數據的小方框,並且可以使用不同的樣式、格式和公式進行操作。
閱讀 Excel 文件有時會很複雜。在 Java 中讀取 Excel 文件也與在 Java 中讀取 Word 文件有些不同,因為 Excel 有單元格。JDK 沒有提供直接的 API 來讀取或寫入 Microsoft Excel 文件。我們必須依賴第三方庫 Apache POI。
POI 代表“Poor Obfuscation Implementation” (簡單混淆實現)。Apache POI 是一個開源的 Java 庫,設計用於讀取和寫入 Microsoft 文檔。它提供了一種創建和操作基於 Microsoft Office 的各種文件格式的方法。使用 Apache POI,應該能夠對一系列 Microsoft Office 文件格式進行創建、修改和顯示/讀取操作。
首先,我們將下載最新版本的 POI JAR。導航至 http://poi.apache.org/download.html 下載最新的 ZIP 檔案,內含 Java API,用於在 Java 中讀取 Excel 檔案。
當您下載ZIP檔案後,您需要將其解壓縮,並將以下JAR文件添加到您的專案的classpath中。這在下面的從Excel文件中讀取中有解釋。
注意:請同時複製來自lib和ooxml-lib的文件與其他文件。
以下是支持XLS和XLSX文件格式的可使用類:
以下是列出在 Java 中使用 POI 讀取 XLS 和 XLSX 文件的不同 Java 介面和類別:
Workbook 介面由 HSSFWorkbook
和 XSSFWorkbook
類實現。
Sheet 介面由 HSSFSheet
和 XSSFSheet
類實現。
Row 介面由 HSSFRow
和 XSSFRow
類實現。
Cell 介面由 HSSFCell
和 XSSFCell
類實現。
作為範例,我們將在 Java 中讀取以下 Excel 文件:
使用任何 Java IDE 創建一個 Java 專案。我們將在本項目中使用 Netbeans。
接下來,在項目中創建一個 lib 資料夾。
然後將下載的 JAR 檔案添加到上一步創建的 lib 資料夾中。
設定 Class-Path
:右鍵點擊項目資料夾 > Build Path > Add External JARs files > 選擇所有上述 JAR 檔案 > Apply and close。
現在,讓我們創建一個名為 ReadExcelFileDemo 的類文件。
以下是用 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();
}
}
}
輸出:
IdNames
1Zeeshan
2Shoaib
3Umar
4Rizwan
5Ahsan
步骤与读取 xlsx 文件相同,除了以下两个主要区别:
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();
}
}
}
輸出:
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、Mobile、Xamarin、Azure Linux和MacOS。
System.Data
物件 — 為 System.Data.DataSet
和 System.Data.DataTable
物件使用 Excel 試算表。以下是一個使用 C# 和 IronXL 讀取 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
使用 IronXL 使開發人員的工作變得更加簡單。其簡單易用的代碼在處理 Excel 文件時使軟體更不容易出現錯誤。
下載 IronXL 並在今天將其用於您的專案。