使用Java讀取Excel文件內(nèi)容的三種方法
在日常開發(fā)中,我們常常需要讀取Excel文件中的數(shù)據(jù)進行進一步處理。無論是批量導(dǎo)入數(shù)據(jù)、統(tǒng)計分析,還是自動化表格處理,Java都可以提供高效、穩(wěn)定的讀取方式。
本文將介紹如何使用 Spire.XLS for Java 讀取Excel文件中的內(nèi)容,涵蓋從文件或流中加載、按單元格讀取文本和數(shù)值、識別單元格類型以及提取公式等多種實用技巧。示例代碼簡單明了,適合初學(xué)者上手,也可作為構(gòu)建復(fù)雜Excel處理功能的基礎(chǔ)。
- 方法1:從Excel文件中逐行讀取所有內(nèi)容
- 方法2:通過InputStream讀取Excel文件
- 方法3:讀取單元格的不同數(shù)據(jù)類型
Maven:
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls.free</artifactId>
<version>5.3.0</version>
</dependency>方法1:從Excel文件中逐行讀取所有內(nèi)容
如果我們需要讀取整個表格的數(shù)據(jù),可以通過遍歷工作表中所有已用單元格來獲取值。
示例代碼
import com.spire.xls.*;
public class ReadExcel {
public static void main(String[] args) {
// 創(chuàng)建Workbook對象并加載Excel文件
Workbook workbook = new Workbook();
workbook.loadFromFile("data.xlsx"); // 或 "data.xls"
// 獲取第一個工作表
Worksheet sheet = workbook.getWorksheets().get(0);
// 遍歷每一行每一列,讀取單元格內(nèi)容
for (int i = 1; i <= sheet.getLastRow(); i++) {
for (int j = 1; j <= sheet.getLastColumn(); j++) {
String cellText = sheet.getCellRange(i, j).getValue();
System.out.print(cellText + "\t");
}
System.out.println();
}
}
}說明:
getCellRange(i, j).getValue()用于獲取單元格的原始字符串值。- 行列索引從1開始,與Excel中一致。
讀取結(jié)果:

方法2:通過InputStream讀取Excel文件
當(dāng)Excel文件來自網(wǎng)絡(luò)、數(shù)據(jù)庫或其他流形式時,我們可以通過 InputStream 加載它,無需將文件先保存在磁盤。
示例代碼
import com.spire.xls.*;
import java.io.*;
public class ReadExcelFromStream {
public static void main(String[] args) throws FileNotFoundException {
// 創(chuàng)建輸入流對象
InputStream stream = new FileInputStream("data.xlsx");
// 加載Excel文件
Workbook workbook = new Workbook();
workbook.loadFromStream(stream);
System.out.println("Load Excel file successfully.");
}
}說明:
- 適用于文件上傳或Web服務(wù)場景。
- 支持
.xls和.xlsx格式。
方法3:讀取單元格的不同數(shù)據(jù)類型
除了文本,Excel單元格中還可能包含數(shù)字、布爾值、日期、公式等。下面示例展示如何獲取各種數(shù)據(jù)類型及公式信息。
示例代碼
import com.spire.xls.*;
import java.util.Date;
public class ReadCellTypes {
public static void main(String[] args) {
Workbook workbook = new Workbook();
workbook.loadFromFile("data.xlsx");
Worksheet sheet = workbook.getWorksheets().get(0);
CellRange cell = sheet.getRange().get(2, 1); // B2
String text = cell.getText(); // 顯示文本
String value = cell.getValue(); // 原始字符串
Object value2 = cell.getValue2(); // 通用對象
String formula = cell.getFormula(); // 公式內(nèi)容
String result = cell.getEnvalutedValue(); // 公式計算結(jié)果
double number = cell.getNumberValue(); // 數(shù)值
Date date = cell.getDateTimeValue(); // 日期
boolean bool = cell.getBooleanValue(); // 布爾值
System.out.println("Text: " + text);
System.out.println("Raw Value: " + value);
System.out.println("Formula: " + formula);
System.out.println("Evaluated Result: " + result);
System.out.println("Number: " + number);
System.out.println("Date: " + date);
System.out.println("Boolean: " + bool);
}
}說明:
.getFormula()可提取單元格中的公式表達式。.getEnvalutedValue()返回公式的計算結(jié)果。- 不同類型的方法適用于不同格式的單元格。
總結(jié)
本文介紹了三種在Java中讀取Excel文件的方法,涵蓋了從本地文件與流中加載、按行讀取數(shù)據(jù)、以及單元格類型識別等多個實用場景。通過這些技巧,我們可以輕松實現(xiàn)對Excel文件內(nèi)容的靈活讀取與后續(xù)處理。
以上就是使用Java讀取Excel文件內(nèi)容的三種方法的詳細內(nèi)容,更多關(guān)于Java讀取Excel文件內(nèi)容的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java JDBC API介紹與實現(xiàn)數(shù)據(jù)庫連接池流程
JDBC是指Java數(shù)據(jù)庫連接,是一種標(biāo)準(zhǔn)Java應(yīng)用編程接口( JAVA API),用來連接 Java 編程語言和廣泛的數(shù)據(jù)庫。從根本上來說,JDBC 是一種規(guī)范,它提供了一套完整的接口,允許便攜式訪問到底層數(shù)據(jù)庫,本篇文章我們來了解JDBC API及數(shù)據(jù)庫連接池2022-12-12
Java中關(guān)于size()>0?和isEmpt()的性能考量
這篇文章主要介紹了Java中關(guān)于size()>0?和isEmpt()性能考量,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
Spring中bean的初始化和銷毀幾種實現(xiàn)方式詳解
這篇文章主要介紹了Spring中bean的初始化和銷毀幾種實現(xiàn)方式詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
IntelliJ IDEA之配置JDK的4種方式(小結(jié))
這篇文章主要介紹了IntelliJ IDEA之配置JDK的4種方式(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Java利用ElasticSearch實現(xiàn)自動補全功能
這篇文章主要為大家詳細介紹了Java如何利用ElasticSearch實現(xiàn)跟谷歌和百度類似的下拉補全提示功能,文中的示例代碼講解詳細,需要的可以參考一下2023-08-08

