在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
Microsoft Excel 工作簿是一款基於電子表格的軟體,讓使用者能夠以高效的方式組織和存儲數據。 它以表格形式儲存和組織數據,即使用行和列。 在 Excel 試算表中的儲存格是用來承載數據的方格,可以應用不同的樣式、格式和公式進行操作。
有時候,讀取 Excel 文件可能會很複雜。 在 Java 中讀取 Excel 文件與讀取 Word 文件稍有不同,因為 Excel 有儲存格。 JDK 不提供直接的 API 用來讀取或寫入 Microsoft Excel 文件。 相反地,我們必須依賴第三方庫 Apache POI。
POI 代表“劣質混淆實施”。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 檔案格式類別,可供使用:
以下是 POI 中用於在 Java 中讀取 XLS 和 XLSX 文件的不同 Java 介面和類別清單:
Workbook 介面由 HSSFWorkbook
和 XSSFWorkbook
類別實現。
XSSFWorkbook:這是一個XLSX文件的類表示。
HSSFSheet
和 XSSFSheet
類別實作了 Sheet 介面。
XSSFSheet:這是一個代表 XLSX 文件中的工作表的類。
HSSFRow
和 XSSFRow
類別實現了 Row 介面。
XSSFRow:這是一個代表 XLSX 檔案中工作表列的類別。
HSSFCell
和 XSSFCell
類別實現了 Cell 介面。
在我們的範例中,我們將在 Java 中讀取以下 Excel 檔案:
使用任意 Java IDE 創建一個 Java 專案。我們將在這個專案中使用 Netbeans。
接下來,在專案中建立一個 lib 資料夾。
然後,將下載的 JAR 檔案添加到前一步驟中創建的 lib 資料夾中。
通過右鍵點擊項目文件夾 > 構建路徑 > 添加外部 JAR 文件 > 選擇以上所有 JAR 文件 > 應用並關閉來設置 Class-Path
。
現在,讓我們創建一個名為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 {
//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是一個獨立的 .NET 函式庫,可以用 C# 讀取和編輯 Microsoft Excel 文件。 它既不需要安裝 Microsoft Excel,也不依賴於 Interop。
使用 IronXL,開發者只需撰寫幾行程式碼即可輕鬆執行所有與 Excel 相關的計算,並且具備快速的性能。 這可以用於添加兩個單元格、計算一列的總數、將整個列添加到 Excel 表、將整個行添加到 Excel 表、單行和多行列求和或通過 IronXL 使許多其他任務變得簡單。有用的功能.
IronXL完全支援 .NET Framework、.NET Core、行動裝置、Xamarin、Azure Linux 和 MacOS。
System.Data
物件 — 使用 Excel 試算表作為 System.Data.DataSet
和 System.Data.DataTable
物件。樣式設定—視覺樣式、字體和字體大小、背景圖案、邊框、對齊和數字格式。
以下是使用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
使用 IronXL 讓開發人員的工作變得更加輕鬆。 它簡單易用的代碼使軟體在處理 Excel 文件時更不容易出現錯誤。
下載 IronXL並在今天將其用於您的專案。