使用poi3.15对Excel工作簿进行分割

该代码段主要功能是处理Excel文件,通过查找特定关键字分割工作簿中的内容并创建新的工作表,然后删除原有的包含关键字的工作表。它首先确定要删除的页数,接着获取工作簿的终结列数和分割次数,之后进行内容分割和复制,最后按照保存的页序号删除原工作表。
摘要由CSDN通过智能技术生成
  public void setSheetForPrint(Workbook workbook)throws Exception{
        /**
         * 处理顺序:
         * 1 确定现有页数,并保存 以待用于删除
         * 2 巡查工作簿1 获取终结列数和分割次数
         * 3 巡查工作簿1 并将其内容进行分割复制
         * 4 用第1步保存的页序号进行删除
         */

        /*1 确定现有页数,并保存 以待用于删除*/
        Integer[] deleteSheetIndexArr = new Integer[workbook.getNumberOfSheets()];
        // 保存页数
        int deleteSheetIndexArrIndex = 0;
        for (Sheet sheet : workbook){
            int sheetIndex = workbook.getSheetIndex(sheet);
            deleteSheetIndexArr[deleteSheetIndexArrIndex] = sheetIndex;
            deleteSheetIndexArrIndex++;
        }
        /*2 巡查工作簿1 获取终结列数和分割次数*/
        // 获取工作簿
        Sheet sheet = workbook.getSheetAt(0);
        //设置关键字 变量 并巡查工作簿
        String keyWord1 = "xxxx";
        String keyWord2 = "yyyy";
        String keyWordLastColumn = "页";
        String keyWordLastRow = "The Below is Blank";
        String keyWordLastRow2 = "以下空白";
        //设置变量
        int lastColumn = 0; //最后一列
        int newSheetNum = 0; //新增页数
        int lastRowNum = sheet.getLastRowNum(); // 最后一行
        List<int[]> deleteRow = new ArrayList<>();
        //开始巡查工作簿

        for (Row row : sheet){
            Cell cell = row.getCell(0);     //获取第0列单元格
            // 查找关键字
            if (PoiExcelUtils.getCellValue(cell).contains(keyWord1)){
                // 如果查找到关键字1
                int nextRowIndex = cell.getRowIndex() +1;
                Row nextRow = sheet.getRow(nextRowIndex);
                Cell nextRowCell = nextRow.getCell(0);
                if (PoiExcelUtils.getCellValue(nextRowCell).contains(keyWord2)){
                    //如果查找到关键字2 则查找关键字3
                    if (lastColumn == 0){   // 如果未获取到最后一列
                        for (Cell tempCell : row){
                            if (PoiExcelUtils.getCellValue(tempCell).contains(keyWordLastColumn)){
                                // 如果查找到关键字3 则返回信息
                                lastColumn = tempCell.getColumnIndex();
                            }
                        }
                    }
                    // 从key1上一行开始 保存这三两行 并增加计数器
                    int[] indexArray = new int[]{cell.getRowIn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值