POI获得隐藏的sheet,获得所需的sheet工作表

前段时间碰到了用户给的一个Excel,为了实现下拉筛选之类的功能excel设了很多隐藏表什么的。
导致我获得sheet时,通过索引0 拿不到。
就写了一个工具 拿到包含某字段的sheet表。

先定义一个类用来接收,所需的sheet名,和你参数字段所在的行号索引(这是我的业务需求,大家可以自行定义所需的返回值)

public class ExcelPojo {
	//sheet的名字  得到后使用 workbook.getSheet(sheetName)就能拿到
    public String sheetName;
    //标题行 行号
    public int rowNumber;
}

我的excel 我需要拿到这个表,它里面有‘序号’这个单元格,工具类就拿到workbook中第一列包含‘’序号‘’的那个sheet。
在这里插入图片描述
工具类

    //参数 : workbook对象和 所需sheet的一个单元格内容
    // 得到包含 cloum 字段的sheet名字,和参数单元格所在的行号  get行时直接从这一行下开始
    //用户的ecxel有隐藏表,遍历十次(如果标数量多就增加次数)拿到财务人员基本情况统计表的sheet
    public static ExcelPojo getSheet(Workbook wb, String cloum) {

        ExcelPojo excelPojo = new ExcelPojo();
        Sheet sheet = wb.getSheetAt(0);
        int index = 0;
        while (true && index < 10) {
            sheet = wb.getSheetAt(index);
            for (int i = 0; i < 8; i++) {
                Row row = sheet.getRow(i);
                if (row != null) {
                    Cell cell = row.getCell(0);
                    if (cell != null) {
                        String cellValue = POIUtils.getCellValue(cell);
                        if (cellValue.equals(cloum)) {
                            String sheetName = sheet.getSheetName();
                            //System.out.println(sheetName);
                            if (sheetName != null) {
                                excelPojo.setSheetName(sheetName);
                                excelPojo.setRowNumber(i);
                                return excelPojo;
                            }
                        }
                    }
                }
            }
            index++;
        }
        return excelPojo;
    }

使用过程

            //得到workbook
            XSSFWorkbook book = new XSSFWorkbook(resourceAsStream);
            //使用工具拿到excel中包含‘序号’字段的sheet
            ExcelPojo excelPojo = MyImportUtil.getSheet(book, "序号");
            Sheet sheet = book.getSheet(excelPojo.getSheetName());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值