通过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();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律