日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

excelutil java_JAVA实现Excel的读取--ExcelUtil工具类

發布時間:2025/3/15 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 excelutil java_JAVA实现Excel的读取--ExcelUtil工具类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

dream.jpg

首先聲明一點,這是自己的寫法,并不是標準寫法,標準寫法可以google一下。

主要運用的apache的POI包中的類。

1.首先創建一個ExcelUtil的工具類,并且把自己需要的方法寫出來。

其中我使用的maven的方式,引入了這兩個依賴:

org.apache.poi

poi

3.13

org.apache.poi

poi-ooxml

3.13

我這里暫時就需要兩個方法:

第一個方法:讀取Excel的文件表格的各個標題,一般的表格都是設有標題的,一般在Excel的第一行,但是不能例外有可能設在其他的行,所以設置的靈活一點。

/**

* 讀取Excel文件的標題信息

* @return

*/

public static List readeExcelHeader(InputStream excelInputSteam,

int sheetNumber,

int headerNumber,

int rowStart){...}

第二個方法:讀取Excel的內容數據,同樣的,要設置的靈活一點,同時要將每一行的數據與標題向對應,所以使用Map來存儲每一列的數據,最后生成一個List,所以返回值是List>

/**

* 讀取Excel文件的內容

* @return

*/

public static List> readeExcelData(InputStream excelInputSteam,

int sheetNumber,

int headerNumber,

int rowStart){...}

2.開始進行內容的填充

首先讀出header,即我們的標題,放在一個List headers中;

其次,每行的數據,放在HashMap(這樣的形式),每行一個HashMap,最后將所有的HashMap放在一個List中,這樣將返回List。

因為兩個方法都有讀取header的部分,第二個方法包含第一個方法,我就只說第二個方法。

第一個方法的實現:

public static List readeExcelHeader(InputStream excelInputSteam,

int sheetNumber,

int headerNumber,

int rowStart) throws IOException, InvalidFormatException {

//要返回的數據

List headers = new ArrayList();

//生成工作表

Workbook workbook = WorkbookFactory.create(excelInputSteam);

Sheet sheet = workbook.getSheetAt(sheetNumber);

Row header = sheet.getRow(headerNumber);

DataFormatter dataFormatter = new DataFormatter();

for (int i = 0; i < header.getLastCellNum(); i++) {

//獲取單元格

Cell cell = header.getCell(i);

headers.add(dataFormatter.formatCellValue(cell));

}

return headers;

}

第二個方法的實現:

public static List> readeExcelData(InputStream excelInputSteam,

int sheetNumber,

int headerNumber,

int rowStart) throws IOException, InvalidFormatException {

//需要的變量以及要返回的數據

List> result = new ArrayList>();

List headers = new ArrayList();

//生成工作表

Workbook workbook = WorkbookFactory.create(excelInputSteam);

Sheet sheet = workbook.getSheetAt(sheetNumber);

Row header = sheet.getRow(headerNumber);

//最后一行數據

int rowEnd = sheet.getLastRowNum();

DataFormatter dataFormatter = new DataFormatter();

//獲取標題信息

for (int i = 0; i < header.getLastCellNum(); ++i) {

Cell cell = header.getCell(i);

headers.add(dataFormatter.formatCellValue(cell));

}

//獲取內容信息

for (int i = rowStart; i <= rowEnd; ++i) {

Row currentRow = sheet.getRow(i);

if (Objects.isNull(currentRow)) {

continue;

}

Map dataMap = new HashMap<>();

for (int j = 0; j < currentRow.getLastCellNum(); ++j) {

//將null轉化為Blank

Cell data = currentRow.getCell(j, Row.CREATE_NULL_AS_BLANK);

if (Objects.isNull(data)) { //感覺這個if有點多余

dataMap.put(headers.get(j), null);

} else {

switch (data.getCellType()) { //不同的類型分別進行存儲

case Cell.CELL_TYPE_STRING:

dataMap.put(headers.get(j), data.getRichStringCellValue().getString());

break;

case Cell.CELL_TYPE_NUMERIC:

if (DateUtil.isCellDateFormatted(data)) {

dataMap.put(headers.get(j), data.getDateCellValue());

} else {

dataMap.put(headers.get(j), data.getNumericCellValue());

}

break;

case Cell.CELL_TYPE_FORMULA:

dataMap.put(headers.get(j), data.getCellFormula());

break;

case Cell.CELL_TYPE_BOOLEAN:

dataMap.put(headers.get(j), data.getBooleanCellValue());

break;

default:

dataMap.put(headers.get(j), null);

}

}

}

result.add(dataMap);

}

return result;

}

總結

以上是生活随笔為你收集整理的excelutil java_JAVA实现Excel的读取--ExcelUtil工具类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。