当前位置: 首页 > news >正文

EasyPoi使用指定的模板导入导出excel

1. 引入pom文件

<!-- EasyPoi依赖 --><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.1.0</version></dependency>

2. 导出接口

 @ApiOperation(value = "easypoi导出(模板)")@GetMapping("/export")public void export(HttpServletResponse response) {List<StudentBean> data = new ArrayList<>();StudentBean studentBean = new StudentBean();studentBean.setAdress("洋县");studentBean.setName("0"); // 0 黎明StudentBean studentBean2 = new StudentBean();studentBean2.setAdress("汉中");studentBean2.setName("1"); // 1 张三StudentBean studentBean3 = new StudentBean();studentBean3.setAdress("西安");studentBean3.setName("2");data.add(studentBean);data.add(studentBean2);data.add(studentBean3);Map<String, Object> hashMap = new HashMap<>();hashMap.put("data", data);try {TemplateExportParams templatePath = new TemplateExportParams("docx/test.xlsx");templatePath.setHeadingStartRow(3);Workbook workbook = ExcelExportUtil.exportExcel(templatePath, hashMap);response.setContentType("application/msword;charset=UTF-8");response.setCharacterEncoding("utf-8");//前端存在跨域不成功,设置可访问response.setHeader("Access-Control-Allow-Origin", "*");//设置不要缓存response.setHeader("Pragma", "No-cache");// 这里URLEncoder.encode可以防止中文乱码response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("学生信息", "UTF-8") + ".xlsx");//输出流OutputStream outStream = response.getOutputStream();//浏览器下载workbook.write(outStream);//关闭流outStream.flush();outStream.close();} catch (IOException e) {throw new IllegalArgumentException(e.getMessage());}}

模板

3. 导入模板

    @ApiOperation(value = "easypoi导入(模板)")@PostMapping("/import")public List<StudentBean> importPoi(@Validated MultipartFile file) {InputStream inputStream = null;try {inputStream = file.getInputStream();//设置导入参数ImportParams importParams = new ImportParams();// excel标题占多少行,而不是第几行
//            importParams.setTitleRows(3); //标题占1行,默认0
//            // excel表头占几行,而不是第几行(多行的意思是合并的行数)
//            importParams.setHeadRows(1); //表头占1行,默认1//excel转POJOList<StudentBean> studentList = ExcelImportUtil.importExcel(inputStream,StudentBean.class, importParams);return studentList;} catch (IOException e) {e.printStackTrace();System.out.println("IOException:" + e);} catch (Exception e) {throw new RuntimeException(e);} finally {if (inputStream != null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}}return null;}
}

4.bean

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;@Data
public class StudentBean {@Excel(name = "姓名",replace={"1_张三","0_黎明"})  // 导入的时候才会映射
//    @Size(min = 0,max = 1,message = "只能为0或者1")private String name;@Excel(name = "地址")
//    @NotBlank(message = "必须不为空")private String adress;
}

5.导出数据

在这里插入图片描述

6 .导入数据及返回结果

在这里插入图片描述
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Grafana学习笔记
  • 线性代数:每日一题1/特征值与相似对角化
  • 【Unity开发】几种空值判断的性能测试
  • TS简单总结
  • 基于微信小程序的书籍销售预测系统的设计与实现(论文+源码)_kaic
  • 前后端项目交互异步请求JSON数据类型后端标准响应数据格式
  • 斗破C++编程入门系列之四:运算符和表达式
  • 手撕C++入门基础
  • Java Sream中自定义Collector实现复杂数据收集方法
  • Java 向上转型小白学习总结
  • hive benchmark
  • zdpvue_primeadmin 登录相关界面的代码梳理和优化,一款Vue3开发的后台管理系统模板
  • IDEA如何进行断点调试
  • day 28 HTTP协议
  • C语言第20天笔记
  • 「面试题」如何实现一个圣杯布局?
  • 0基础学习移动端适配
  • 5、React组件事件详解
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • docker-consul
  • Git学习与使用心得(1)—— 初始化
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Intervention/image 图片处理扩展包的安装和使用
  • Java IO学习笔记一
  • Java编程基础24——递归练习
  • js对象的深浅拷贝
  • Lucene解析 - 基本概念
  • Python中eval与exec的使用及区别
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 思维导图—你不知道的JavaScript中卷
  • 线性表及其算法(java实现)
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 阿里云API、SDK和CLI应用实践方案
  • 组复制官方翻译九、Group Replication Technical Details
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • #include<初见C语言之指针(5)>
  • #QT 笔记一
  • (02)vite环境变量配置
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (Java数据结构)ArrayList
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (推荐)叮当——中文语音对话机器人
  • (原創) 物件導向與老子思想 (OO)
  • (转载)OpenStack Hacker养成指南
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net 中viewstate的原理和使用
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接