integrated_traffic/src/main/java/com/zcloud/util/ObjectExcelRead.java

113 lines
2.9 KiB
Java
Raw Normal View History

2024-01-03 09:48:43 +08:00
package com.zcloud.util;
import com.zcloud.entity.PageData;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
2024-01-03 11:04:18 +08:00
import java.math.BigDecimal;
2024-01-03 09:48:43 +08:00
import java.util.ArrayList;
import java.util.List;
/**
* EXCEL
*/
public class ObjectExcelRead {
/**
* @param filepath //文件路径
* @param filename //文件名
* @param startrow //开始行号
* @param startcol //开始列号
* @param sheetnum //sheet
* @return list
*/
2024-01-03 11:04:18 +08:00
public static List<Object> readExcel(File target, int startrow, int startcol, int sheetnum) {
2024-01-03 09:48:43 +08:00
List<Object> varList = new ArrayList<Object>();
try {
FileInputStream fi = new FileInputStream(target);
HSSFWorkbook wb = new HSSFWorkbook(fi);
HSSFSheet sheet = wb.getSheetAt(sheetnum); //sheet 从0开始
2024-01-03 11:04:18 +08:00
int rowNum = getExcelRealRow(sheet) ; //取得最后一行的行号
2024-01-03 09:48:43 +08:00
2024-01-03 11:04:18 +08:00
for (int i = startrow; i <= rowNum; i++) { //行循环开始
2024-01-03 09:48:43 +08:00
PageData varpd = new PageData();
HSSFRow row = sheet.getRow(i); //行
int cellNum = row.getLastCellNum(); //每行的最后一个单元格位置
for (int j = startcol; j < cellNum; j++) { //列循环开始
HSSFCell cell = row.getCell(Short.parseShort(j + ""));
2024-01-03 11:04:18 +08:00
String cellValue = null;
if (null != cell) {
switch (cell.getCellType().getCode()) { // 判断excel单元格内容的格式并对其进行转换以便插入数据库
case 0:
BigDecimal bigDecimal = new BigDecimal(cell.getNumericCellValue());
cellValue = bigDecimal.toPlainString();
// cellValue = String.valueOf((int) cell.getNumericCellValue());
break;
case 1:
cellValue = cell.getStringCellValue();
break;
case 2:
cellValue = cell.getNumericCellValue() + "";
// cellValue = String.valueOf(cell.getDateCellValue());
break;
case 3:
cellValue = "";
break;
case 4:
cellValue = String.valueOf(cell.getBooleanCellValue());
break;
case 5:
cellValue = String.valueOf(cell.getErrorCellValue());
break;
}
} else {
cellValue = "";
}
varpd.put("var"+j, cellValue);
2024-01-03 09:48:43 +08:00
}
varList.add(varpd);
}
} catch (Exception e) {
System.out.println(e);
}
return varList;
}
2024-01-03 11:04:18 +08:00
/**
* excel
* @param sheet excel簿
* @return
*/
public static int getExcelRealRow(HSSFSheet sheet) {
boolean flag = false;
int rowCount = 0;
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
HSSFRow row = sheet.getRow(i); //行
HSSFCell cell = row.getCell(0);
if(null != cell){
rowCount ++;
continue;
}else{
break;
}
}
return rowCount;
}
2024-01-03 09:48:43 +08:00
}