java解析Excel文件

下文介紹java解析Excel文件的方案

前置準備

1.第三方jar包或者Maven配置

org.apache.poi的jar包

Maven配置如下

? ? <groupId>org.apache.poi

? ? <artifactId>poi

? ? <version>3.15

</dependency>

分析

首先我們大概分析下,實現(xiàn)解析大概需要那幾步:

第一步、加載數(shù)據(jù)源文件

說明:把源文件以數(shù)據(jù)流的形式寫入可以操作解析Excel文件的對象中

第二步、獲取工作表頁數(shù)據(jù)

說明:利用可以操作解析Excel文件的對象,獲取工作表頁數(shù)據(jù)

第三步、獲取工作表頁中行數(shù)據(jù)

說明:工具類自帶方法獲取行數(shù)據(jù)

第四步、獲取工作表頁中指定行的指定列數(shù)據(jù)

說明:工具類自帶方法獲取列數(shù)據(jù)

實際說明

下面我們實際說明每一步所涉及到的代碼內(nèi)容,有些判斷細節(jié)就不一一列舉,請看后面的整體截圖。

第一步、加載數(shù)據(jù)源文件

//先把目標文件轉(zhuǎn)為文件流

File excel =new File("目標文件所處地址");

//創(chuàng)建輸出流對象

FileInputStream fis =new FileInputStream(excel);

//將輸出的流對象引入到解析excel文件的對象中

Workbook wb =new HSSFWorkbook(fis);

第二步、獲取工作表頁數(shù)據(jù)

?//讀取第三個工作表頁的數(shù)據(jù)(第一個工作表是0)

Sheet sheet = wb.getSheetAt(2);

第三步、獲取工作表頁中行數(shù)據(jù)

//讀取的行.如果sheet中一行數(shù)據(jù)都沒有則返回-1,只有第一行有數(shù)據(jù)則返回0,最后有數(shù)據(jù)的行是第n行則返回n-1

int firstRowIndex = sheet.getFirstRowNum();

//讀取的總的行數(shù)

int lastRowIndex = sheet.getLastRowNum();

//獲取指定行的數(shù)據(jù)

Row row = sheet.getRow(1);

可以通過for循環(huán),遍歷每一行并獲取行數(shù)據(jù),再在循環(huán)內(nèi)對列數(shù)據(jù)進行處理

第四步、獲取工作表頁中指定行的指定列數(shù)據(jù)

//當前行的第一個列數(shù)據(jù)的下標

int firstCellIndex = row.getFirstCellNum();

//row中一列數(shù)據(jù)都沒有則返回-1,只有第一列有數(shù)據(jù)則返回1,最后有數(shù)據(jù)的列是第n列則返回n

int lastCellIndex = row.getLastCellNum();

//獲取當前下標(列)的單元格數(shù)據(jù)

Cell cell = row.getCell(cIndex);

通過以上步驟就能解析到各行各列的數(shù)據(jù)值了,具體怎么存儲、使用就可以結(jié)合實際的業(yè)務場景搭配使用。


下面詳細說明下,解析過程中需要注意的一些細節(jié)點

源文件相關的一些判斷處理

//判斷是文件并且是存在的

if (excel.isFile() && excel.exists()) {

//拆分文件名和后綴

? ? String[] split = excel.getName().split("\\.");? //.是特殊字符,需要轉(zhuǎn)義

? ? //創(chuàng)建解析excel文件的對象類

? ? Workbook wb;

? ? //根據(jù)文件后綴(xls/xlsx)進行判斷

? ? if ("xls".equals(split[1])){

//創(chuàng)建輸出流對象

? ? ? ? FileInputStream fis =new FileInputStream(excel);? //文件流對象

? ? ? ? //將輸出的流對象引入到解析excel文件的對象中

? ? ? ? wb =new HSSFWorkbook(fis);

? ? }else if ("xlsx".equals(split[1])){

//將文件對象引入到解析excel文件的對象中

? ? ? ? wb =new XSSFWorkbook(excel);

? ? }else {

System.out.println("文件類型錯誤!");

return null;

? ? }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容