和之前的类似 但是换成通过分页符切割了
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 keyWordLastRow = "The Below is Blank";
String keyWordLastRow2 = "以下空白";
int[] rowBreaks = sheet.getRowBreaks(); //获取分页符 依照分页符进行分页
//设置变量
int lastColumn = 33; //最后一列
int newSheetNum = rowBreaks.length; //新增页数
int lastRowNum = sheet.getLastRowNum(); // 最后一行
//开始巡查工作簿
for (Row row : sheet){
// 查找关键字
// 如果检测到最后一行的标记 则跳出循环
for (Cell cellT :row ){
if (PoiExcelUtils.getCellValue(cellT).contains(keyWordLastRow)){
lastRowNum = row.getRowNum() +1;
break;
}
}
}
/*3 巡查工作簿1 并将其内容进行分割复制*/
// 首先获取合并单元格信息
Map<Integer,List<Integer[]>> mergedDic = new HashMap<>(); // 单元格合并字典
for (int i = 0; i < sheet.getNumMergedRegions(); i++) {
CellRangeAddress mergedRegion = sheet.getMergedRegion(i);
Integer firstRow = mergedRegion.getFirstRow();
Integer lastRow = mergedRegion.getLastRow();
Integer firstColumn = mergedRegion.getFirstColumn();
Integ