通过poi实现对已有的excel模板填充数据
实现对已有的excel模板根据索引位置填充数据
在pom.xml文件中添加依赖 :
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.5</version>
</dependency>
数据装填(只针对第一个sheet) :
//根据自身的excel文件地址,将文件转为文件输入流
InputStream inputStream= new FileInputStream(file.getUrl);
// 配置输出流相关数据
HttpServletResponse response = ServletUtils.getResponse();
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
Workbook workbook = null;
try {
// 根据文件后缀,进行不同的格式的数据转换
switch (fileSuffix){
case ".xls":
workbook = new HSSFWorkbook(inputStream);
break;
case ".xlsx":
workbook = new XSSFWorkbook(inputStream);
break;
default:
System.out.println("文件类型错误");
}
Sheet sheet = workbook.getSheetAt(0);
// 给sheet起名
workbook.setSheetName(0,"第一个sheet");
// 获取本页sheet最后一行不为空数据的位置
int lastRowNum = sheet.getLastRowNum();
// 当已上传的excel模板存在自定义好的列名,则拿出来。没有列名可直接从第0行赋值
Row row = sheet.getRow(lastRowNum);
// 将需要填入的数据根据索引位置进行填充
dataList.forEach(data ->{
Row newRow = sheet.createRow(lastRowNum + 1);
for (Integer index : data.keySet()){
newRow.createCell(index).setCellValue(data.get(index));
}
});
OutputStream outputStream = response.getOutputStream();
// 将构建好的excel写入输出流
workbook.write(outputStream);
// 进行流关闭
outputStream.close();
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}

浙公网安备 33010602011771号