JAVA如何讀取Excel數(shù)據(jù)
1.創(chuàng)建Maven項目在pom文件中添加依賴
<dependencies>
<!-- 舊的 .xls -->
<!--<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>-->
<!-- 新的 .xlsx -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
</dependencies>
2.編寫代碼
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.IOException;
public class PoiTest {
public static void main(String[] args) throws IOException {
FileInputStream is = new FileInputStream("src/main/resources/test.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(is);
//讀取Sheet
Sheet sheet = workbook.getSheetAt(0);
Row row = sheet.getRow(0);
//獲取最大行數(shù)
int rownum = sheet.getPhysicalNumberOfRows();
//獲取最大列數(shù)
int colnum = row.getPhysicalNumberOfCells();
for (int i = 0; i < rownum; i++) {
//獲取第i行數(shù)據(jù)
row = sheet.getRow(i);
for (int j = 0; j < colnum; j++) {
Cell cell = row.getCell(j);
cell.setCellType(CellType.STRING);
String cellText = cell.getStringCellValue();
System.out.print(cellText + "\t");
}
System.out.println();
}
}
}
3.報錯
3.1 異常解決Cannot get a STRING value from a NUMERIC cell poi
poi導入excel表格數(shù)據(jù)時報java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell異常是因為在讀取cell單元格字符串時,有number類型的數(shù)據(jù),因此需要把它轉(zhuǎn)化為純String類型,這樣就不會報錯了。
報錯的地方類似于這樣。
//獲取單元格 XSSFCell cell = row.getCell(0); //獲取單元格數(shù)據(jù) String cellValue = cell.getStringCellValue();
在number類型轉(zhuǎn)化為String類型的過程中造成了Cannot get a STRING value from a NUMERIC cell這樣的問題,因此需要在讀取excel單元格數(shù)據(jù)轉(zhuǎn)化之前設置單元格類型為String,代碼如下。
//獲取單元格 XSSFCell cell = row.getCell(0); //設置單元格類型 cell.setCellType(CellType.STRING); //獲取單元格數(shù)據(jù) String cellValue = cell.getStringCellValue();
3.2 poi導出Excel報錯java.lang.NoClassDefFoundError: org/openxmlformats/schemas/spreadsheetml/x2006/main/CTWorkbook$Factoryat
Exception in thread "main" java.lang.NoClassDefFoundError: org/openxmlformats/schemas/spreadsheetml/x2006/main/CTWorkbook$Factoryat org.apache.poi.xssf.usermodel.XSSFWorkbook.onWorkbookCreate(XSSFWorkbook.java:436)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:238)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:229)
at exportexcel.BuildXLSX.main(BuildXLSX.java:35)
Caused by: java.lang.ClassNotFoundException: org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook$Factory
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 4 more
錯誤原因:
未導入poi-ooxml-schema jar包。我使用的是poi-3.15 , 應該是poi-ooxml-schemas-3.15.jar包
以上就是JAVA如何讀取Excel數(shù)據(jù)的詳細內(nèi)容,更多關于JAVA讀取Excel數(shù)據(jù)的資料請關注腳本之家其它相關文章!
相關文章
Java 快速排序(QuickSort)原理及實現(xiàn)代碼
這篇文章主要介紹了Java 快速排序(QuickSort)原理及實現(xiàn)代碼,有需要的朋友可以參考一下2014-01-01
基于Spring Web Jackson對RequestBody反序列化失敗的解決
這篇文章主要介紹了基于Spring Web Jackson對RequestBody反序列化失敗的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
MybatisPlus使用Mybatis的XML的動態(tài)SQL的功能實現(xiàn)多表查詢
本文主要介紹了MybatisPlus使用Mybatis的XML的動態(tài)SQL的功能實現(xiàn)多表查詢,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-11-11
詳解Spring Boot實戰(zhàn)之Rest接口開發(fā)及數(shù)據(jù)庫基本操作
本篇文章主要介紹了Spring Boot實戰(zhàn)之Rest接口開發(fā)及數(shù)據(jù)庫基本操作,具有一定的參考價值,有興趣的可以了解一下2017-07-07

