java xlsm_poi excel读取 兼容xlsm,xlsx

@return list

*/

public static List readExcel(String filepath, String filename, int startrow, int startcol, int sheetnum) {

List varList = new ArrayList();

try {

File target = new File(filepath, filename);

FileInputStream fi = new FileInputStream(target);

Workbook wb = null;

try{

wb = new XSSFWorkbook(fi);

}

catch (Exception ex) {

wb = new HSSFWorkbook(new FileInputStream(target));

}

Sheet sheet = wb.getSheetAt(sheetnum); //sheet 从0开始

FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();

int rowNum = sheet.getLastRowNum() + 1; //取得最后一行的行号

for (int i = startrow; i < rowNum; i++) { //行循环开始

PageData varpd = new PageData();

Row row = sheet.getRow(i); //行

int cellNum = row.getLastCellNum(); //每行的最后一个单元格位置

for (int j = startcol; j < cellNum; j++) { //列循环开始

DecimalFormat df = new DecimalFormat("0.000000");

Cell cell1 = row.getCell(Short.parseShort(j + ""));

CellValue cell = evaluator.evaluate(cell1);

String cellValue = null;

if (null != cell) {

switch (cell.getCellType()) { // 判断excel单元格内容的格式,并对其进行转换,以便插入数据库

case 0:

cellValue = df.format(cell.getNumberValue());

break;

case 1:

cellValue = cell.getStringValue();

break;

case 2:

cellValue = cell.getNumberValue() + "";

// cellValue = String.valueOf(cell.getDateCellValue());

break;

case 3:

cellValue = "";

break;

case 4:

cellValue = String.valueOf(cell.getBooleanValue());

break;

case 5:

cellValue = String.valueOf(cell.getErrorValue());

break;

}

} else {

cellValue = "";

}

varpd.put("var"+j, cellValue);

}

varList.add(varpd);

}

} catch (Exception e) {

System.out.println(e);

}

return varList;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值