一.把一个多shee表格文件根据sheet分成多个表格文件
package com.test;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelTest {
public static final String SAMPLE_XLSX_FILE_DownloadURL = "C:\\Users\\user\\Desktop\\测试.xlsx";
/**
* 创建分解Excel文件包
* @param DownloadURL Excel文件来源路径url
*/
public static void createDownload(String DownloadURL) throws IOException {
try {
// 1.读取源Excel文件
Workbook workbook = WorkbookFactory.create(new File(DownloadURL));
//Workbook workbook = WorkbookFactory.create(new File("C:\\Users\\Desktop\\2021测试.xlsx"));
File file = new File(DownloadURL);
String nd = file.getName().trim().substring(0, 5);
// 2.创建文件夹,放置分解表格文件
File fileFolder = new File(file.getParent() + "/" + nd);
fileFolder.mkdir();//生成空文件夹
String DownloadFile = file.getParent() + "/" + nd;
// 3.获取源Excel文件中的所有表格数量
int numberOfSheets = workbook.getNumberOfSheets();
// 4.遍历每个表格
for (int i = 0; i < numberOfSheets; i++) {
// 获取当前表格
Sheet sheet = workbook.getSheetAt(i);
// 创建一个新的Excel文件
Workbook newWorkbook = new XSSFWorkbook();
// 创建一个表格,名称为Sheet标题
Sheet newSheet = newWorkbook.createSheet(workbook.getSheetAt(i).getSheetName());
// 获取当前表格的行数
int rowCount = sheet.getLastRowNum();
// 6.遍历每一行,并复制到新的Excel文件中
for (int j = 0; j <= rowCount; j++) {
// 获取源Excel文件中的当前行
Row row = sheet.getRow(j);
// 创建新的Excel文件中的当前行
Row newRow = newSheet.createRow(j);
// 获取当前行的列数
int columnCount = row.getLastCellNum();
//7.遍历每一列,并复制到新的Excel文件中
for (int k = 0; k < columnCount; k++) {
// 获取源Excel文件中的当前单元格
Cell cell = row.getCell(k);
/*//把数字当成String来读,避免出现1读成1.0的情况
if (cell.getCellType() == CellType.NUMERIC) {
cell.setCellType(CellType.STRING);
}*/
//读取数据前设置单元格类型 加入这句就可以
cell.setCellType(CellType.STRING);
// 创建新的Excel文件中的当前单元格
Cell newCell = newRow.createCell(k);
// 复制当前单元格的值到新的Excel文件中
newCell.setCellValue(cell.getStringCellValue());
}
}
//8.保存文件到指定的文件夹
FileOutputStream fileOut = new FileOutputStream(DownloadFile + "/" + nd + workbook.getSheetAt(i).getSheetName() + ".xlsx");
//System.out.printf("生成文件路径:"+DownloadFile+"\\"+nd+workbook.getSheetAt(i).getSheetName()+".xlsx");
newWorkbook.write(fileOut);//保存文件
fileOut.close();//关闭文件
}
System.out.printf("生成分解Excel文件成功");
} catch (IOException e) {
System.out.printf("生成分解Excel文件失败", e);
}
}
public static void main(String arg[]) throws IOException {
createDownload(SAMPLE_XLSX_FILE_DownloadURL);
}
}