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
使用poi3.15对Excel工作簿进行分割
于 2023-06-20 09:59:57 首次发布
该代码段主要功能是处理Excel文件,通过查找特定关键字分割工作簿中的内容并创建新的工作表,然后删除原有的包含关键字的工作表。它首先确定要删除的页数,接着获取工作簿的终结列数和分割次数,之后进行内容分割和复制,最后按照保存的页序号删除原工作表。
摘要由CSDN通过智能技术生成