模板导出
实现流程1.自定义excel模板,放到Springboot的resource路径下,程序按照excel的路径将Excel读取成workbook流,
2.给单元格赋值,我们知道模板长什么样子,从第几行开始遍历赋值数据,或者指定某个单元格赋值数据都可以通过x,y轴的坐标来定位。
3.赋值完成后,我们将带有数据的workbook保存到本地;
4.输出到浏览器下载,或者只留在本地文件留着给Email做附件都可以,看自己的业务需求

封装的工具类

import org.apache.poi.ss.usermodel.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/*
* poi 将数据导入指定模板
* Qauthor T011921
* */
@Component
public class ExcelDataWriteTemplate {static final Logger logger = LoggerFactory.getLogger(ExcelDataWriteTemplate.class);private Workbook workbook;private Sheet sheet;private Cell cell;private Row row;private CellStyle cellStyle;/**** @param filePath 模板的路径@return*/public void createWorkbook(Stping filePath) {try{ClassPathResource classPathResource = new CLassPathResource(filePath);workbook = WorkbookFactory.create(classPathResource.getInputStream());cellStyle = workbook.createCellStyle();cellStyle.setAlignment(HorizontalAlignment.CENTER);cellStyle.setBorderBottom(BorderStyle.THIN);cellStyle.setBorderLeft(BorderStyLe.THIN);cellStyLe.setBorderRight(BorderStyLe.THIN);cellStyle.setBorderTop(BorderStyle.THIN);}catch(Exception e){Logger.error("createWorkbook-->",filePath)e.printStackTrace();}}/**@param SheetName 提供sheet页的名称,操作该sheet页*/public void setCustomSheet(String SheetName){ try{sheet = workbook.getSheet(SheetName);}catch (Exception e){logger.error("setcustomSheet-->", SheetName);e.printstackTrace();}}/*根据excel坐标,向指定坐标位置赋值* @param x ,从0开始* @param y从0开始* @param value 存入的值*/public void setCellValue(int x,int y, String value){try{row = sheet.getRow(y);if(row == null){row = sheet.createRow(y);}cell = row.getCell(x);if(cell == null){cell = row.createCell(x);}cell.setCellValue(value);}catch (Exception e){logger.error("setCellValue-->""{x:" + x + ",y:" + y +  ",value:" + value + "}");e.printStackTrace();}}/**根据excel坐标,从指定行循环依次遍历数据* @param y告诉程序从exceL的第几行开始插入数据;从0开始* @param x告诉程序从第几列开始依次插入数据,从0开始* @param fieldName 与数据集合的key字段对应,该数组的顺序需要与ExceL模板的列顺序对应* @param dataList 数据集合* */public void setCelLValue( int x, int y, List<Map<String, Object>> dataList, String[] fieldName){int cache_X =x;for (int i=0; i<dataList.size();i++){row = sheet.getRow(y);if(row == null){row = sheet.createRow(y);}y++;for(int j =0; j<fieldName.length;j++){cell = row.getCell(x);if(cell == null){cell = row.createCell(x);cell.setCellStyle(cellStyle);}if (dataList.get(i).containsKey(fieldName[j].toString())) {cell.setCellValue(dataList.get(i).get(fieldName[j]).toString());}x++;}x = cache_X;}}/***将workbook文件流输出到本地*/public void write(String tempFile) {FileOutputStream fos = nulL;try{fos = new FileOutputStream(tempFile);workbook.write(fos);} catch (FileNotFoundException e) {e.printStackTrace();}catch (IOException e) {e.printStackTrace()} finally {if(fos != null) {try{fos.close();} catch (IOException e) {e.printStackTrace();}}    if (workbook!=null) {try {workbook.close();} catch (IOException e) {e.printStackTrace();}}}}
}

调用上面工具类

public String writeExcelFile(List<Map<String, Object>> list1, List<Map<String, Object>> List2, String tempPath, boolean flag){ ExcelDataWriteTemplate workbook = new ExcelDataWriteTemplate();workbook.createWorkbook(tempPath);if(flag){workbook.setCustomSheet("sheet0");workbook.setCellValue(2, 1, "填报机构:xxx");workbook.setCellValue(5, 1, "联系电话:xxx");workbook.setcellValue(0, 3,list1,EmailConstant.fieldNames);//写入到临时文件String filePath= SystemProperties.DOWLOAD_PATH + File.separator + System.currentTimeMillis() +".xLs";workbook.write(filePath);return filePath;
}

poi导出Excel之模板导出相关推荐

  1. POI之excel固定模板导出

    POI之excel固定模板导出 一.简介 二.excel模板 三.项目中maven依赖 四.Excel模板操作代码 五.Controller层excel模板导出接口代码 六.导出excel 一.简介 ...

  2. JXLS导出Excel(模板导出)

    1.导包 在pom.xml中加入依赖如下: <dependency><groupId>org.jxls</groupId><artifactId>jxl ...

  3. 蓄力-利用POI进行excel的导入导出(包含图片)

    这里写自定义目录标题 利用POI进行excel的导入导出 引入的jar包 excel导入 主方法: 将excel里面的图片转成数据 xls格式 xlsx格式 将图片数据转成字节流的方式传输到FTP服务 ...

  4. 手摸手教学-利用原生POI对excel的导入导出以及阿里的easyexcel的基本操作

    文章目录 原生POI对excel的导入导出以及阿里的easyexcel的基本操作 首先是最原始的POI操作excel 其次是POI操作excel对数据库的导入导出 最后是阿里的easyexcel的简单 ...

  5. Excel按照模板导出并下载

    Excel按照模板导出并下载 仅记录方法,如果使用中遇到问题,并不负责 一般来讲,导出关系型数据库的Excel,可以直接按照数据库中的格式导出,非常简单,之后会贴上简单格式导出的代码. 如果涉及到按照 ...

  6. 使用 poi 通过浏览器方式导出Excel表格(导出字段与表格字段不一样且取值逻辑改变)

    使用 poi 通过浏览器方式导出Excel表格(导出字段与表格字段不一样且取值逻辑改变) 思路:拿到表格页面查询的结果作为查询条件,表格页面的url和点击导出按钮的url是一样的,按钮的url多一个参 ...

  7. java 导出excel xssf_XSSFWorkbook实现导出excel

    1.pom.xml中加入poi依赖: org.apache.poi poi 3.10-FINAL org.apache.poi poi-ooxml 3.10-FINAL org.apache.poi ...

  8. vue+elementui表格前端导出excel以及自定义导出样式

    vue+elementui表格前端导出excel以及自定义导出样式 项目遇到前端自己导出表格,我自己把后端给我的数据处理了一波,合并重复列啊,以及表头合并啊.可没想到导出竟然也要前端自己来弄,于是乎请 ...

  9. JAVA POI通用Excel导入模板

    JAVA POI通用Excel导入模板 Excel导入模板类 Excel导入模板类 package com.golte.dataform.analysis.controller;import com. ...

最新文章

  1. Android 替换TextView 里面指定的符号
  2. Android 常见工具类封装
  3. Mock session,cookie,querystring in ASB.NET MVC
  4. @PreAuthorize 权限控制的原理
  5. Java大神推荐,java编程基础必备(必看)
  6. 这台无人机40小时经历上万次事故,终于借助AI学会了自动飞行
  7. vue 实例化几种方式_Vue双向数据绑定
  8. swag您的装置不支持_一件充满意境的中国风水墨粒子、电子屏风交互装置
  9. 如何打印出给定尺寸的方格_打印给定号码的表格| 8086微处理器
  10. CVPR 2019 | Adobe提出新型超分辨率方法:用神经网络迁移参照图像纹理
  11. 跑分cpu_英特尔Rocket Lake 8核心和16线程CPU跑分泄漏
  12. 限定位宽比较大小_自己之前买电脑整理的一些电脑知识,比较粗糙,仅供参考。...
  13. sd卡测速工具_怎样恢复SD卡数据?教你两招轻松恢复
  14. catia飞机建模+flightgear飞行仿真
  15. 心电信号越界怎么回事_心电信号基础
  16. SSD目标检测算法生成8732个先验框
  17. 最近发现的一个c# winform的一个很好用很强大的excel控件 reogrid控件
  18. RS编译码理论介绍与MATLAB性能仿真
  19. warning: ISO C forbids an empty translation unit [-pedantic]
  20. java微信小程序的校园外卖点餐平台 uniapp

热门文章

  1. 阿里云计算ACP认证经验分享(一)
  2. 微信小程序生成海报失败问题解决方法
  3. k8s使用(kubernetes)
  4. jar包部署到Linux服务器
  5. LeetCode 409. 最长回文串(构造最长回文判断)
  6. 2023该好好赚钱了,推荐三个下班就能做的副业
  7. 【MySQL 教程】达达集团实时计算任务SQL化实践
  8. 我的英文写作学习之旅:100日入门+后期靠积累
  9. 上海人代会:代表聚焦自贸区新片区建设
  10. Python编程 递归函数