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工具类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 登录session_JavaW
- 下一篇: fx2n4ad模块中文手册_三菱特殊模块