Java后台遍历Excel文件的数据

public static List<Object[]> getExcelAll(File file) {
    List<Object[]> list = new ArrayList<>();
    try {
        Workbook wb = null;
        String fileName = file.getName();
        if (fileName.toUpperCase().endsWith("XLS")) {
            wb = new HSSFWorkbook(new FileInputStream(file));
        } else if (fileName.toUpperCase().endsWith("XLSX")) {
            wb = new XSSFWorkbook(new FileInputStream(file));
        }
        // 把一张xls的数据表读到wb里
        // 读取第一页,一般一个excel文件会有三个工作表,这里获取第一个工作表来进行操作 HSSFSheet sheet =
        // wb.getSheetAt(0);
        Sheet sheet = wb.getSheetAt(0);

        DecimalFormat df = new DecimalFormat("0");
        // 循环遍历表sheet.getLastRowNum()是获取一个表最后一条记录的记录号,
        int maxNum = sheet.getLastRowNum();
        //每一列数据长度应该写死,否则后面遍历取最后列的值会报数组越界异常
        Row row1=sheet.getRow(0);
        int maxRow1 =row1.getLastCellNum();

        // 如果总共有3条记录,那获取到的最后记录号就为2,因为是从0开始的
        for (int j = 0; j < maxNum + 1; j++) {
            // 创建一个行对象
            Row row = sheet.getRow(j);
            // 把一行里的每一个字段遍历出来
            if (row == null) {
                continue;
            } else {
                int maxRow = row.getLastCellNum();
                //跳过纯空数据
                if (maxRow < 1) {
                    continue;
                }
                String[] str2 = new String[maxRow1];
                for (int i = 0; i < maxRow; i++) {
                    // 创建一个行里的一个字段的对象,也就是获取到的一个单元格中的值
                    Cell cell = row.getCell(i);
                    // if (cell != null) {
                    // System.out.println("类型:" + cell.getCellType());
                    // }

                    // 在这里我们就可以做很多自己想做的操作了,比如往数据库中添加数据等
                    // System.out.println("第" + (j + 1) + "行的第" + i + "列的值:"
                    // + cell);
                    if (cell != null) {
                        if (cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) { //类型为数值
                            str2[i] = df.format(cell.getNumericCellValue()); //防止数字变为科学计数
                        } else {
                            str2[i] = cell + "";
                        }
                    }
                }
                list.add(str2);
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return list;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值