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

116 lines
2.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
import java.math.BigDecimal;
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
*/
public static List<Object> readExcel(File target, int startrow, int startcol, int sheetnum) {
List<Object> varList = new ArrayList<Object>();
try {
FileInputStream fi = new FileInputStream(target);
HSSFWorkbook wb = new HSSFWorkbook(fi);
HSSFSheet sheet = wb.getSheetAt(sheetnum); //sheet 从0开始
int rowNum = getExcelRealRow(sheet) ; //取得最后一行的行号
for (int i = startrow; i <= rowNum; i++) { //行循环开始
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 + ""));
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);
}
varList.add(varpd);
}
} catch (Exception e) {
e.printStackTrace();
}
return varList;
}
/**
* 获取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); //行
if(row == null){
break;
}
HSSFCell cell = row.getCell(0);
if(null != cell){
rowCount ++;
continue;
}else{
break;
}
}
return rowCount;
}
}