为了账号安全,请及时绑定邮箱和手机立即绑定

poi excel读取 兼容xlsm,xlsx

标签:
Java

需要jar包:poi-3.7-20101029.jar
poi-examples-3.7-20101029.jar
poi-ooxml-3.7-20101029.jar
poi-ooxml-schemas-3.7-20101029.jar
poi-scratchpad-3.7-20101029.jar
xmlbeans-2.3.0.jar

/**

  • @param filepath //文件路径
  • @param filename //文件名
  • @param startrow //开始行号
  • @param startcol //开始列号
  • @param sheetnum //sheet
  • @return list
    */
    public static List<Object> readExcel(String filepath, String filename, int startrow, int startcol, int sheetnum) {
    List<Object> varList = new ArrayList<Object>();

    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;

    }

点击查看更多内容
3人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
3
获赞与收藏
23

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消