一:先写 导入

1:java是基于包:poi 组件实现的,pom组件如下:

<!-- Excel导入功能实现 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>

2:但是如果完全基于poi去做,需要封装很多代码,比较复杂一下,使用阿里的组件   easyexcel

该组件是基于  上面的poi 再封装一次完成。所以如果使用 easyexcel还是必须引用poi的包

pom里面的文件如下:但是这里需要注意   easyexcel 跟 poi的版本一定要对应起来,如果不对应就会报错,错误信息是:提示某一个类不存在


java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/FileMagic
   <!-- alibaba的Excel导入功能实现 --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.8</version></dependency>

3:控制器 Controller 里面的API代码:

需要注意:

EasyExcel 就是阿里组件里面的类;

HealthTargetImport 是自定义的模板样式;如下,也贴出来

MultipartFile  是 springframework里面的封装类

count = this.service.importExcel(healthTargetImports)  这句话就是 自己写的批量添加方法,

因为上面已经拿到了excel的数据。存放在healthTargetImports 中,所以后面怎么玩都行,

 @PostMapping("/importExcel")@ApiOperation(value = "导入功能", notes = "导入功能")public ApiResponse<Integer>  importExcel(@RequestParam("file")  MultipartFile file) throws IOException {InputStream inputStream = file.getInputStream();List<HealthTargetImport> healthTargetImports = EasyExcel.read(inputStream).head(HealthTargetImport.class)// 设置sheet,默认读取第一个.sheet()// 设置标题所在行数.headRowNumber(1).doReadSync();// 获取excel的数据后添加到数据库int count = 0;if (healthTargetImports.size() > 0) {count = this.service.importExcel(healthTargetImports);}return ApiResponse.success(count);}
package com.health.util.data.excel;import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;/***  对接单位检项 细项 指标导入模板*/
@Data
public class HealthTargetImport {/*** 单位编码*/@ExcelProperty(value = "单位编码",index = 0)private String healthCode;/*** 项目编码*/@ExcelProperty(value ="项目编码",index = 1)private String healthProjectCode;/*** 项目名称*/@ExcelProperty(value = "项目名称",index = 2)private String healthProjectName;/*** 指标编码*/@ExcelProperty(value = "指标编码",index = 3)private String healthTargetCode;/*** 指标名称*/@ExcelProperty(value = "指标名称",index = 4)private String healthTargetName;/*** 数据类型*/@ExcelProperty(value = "数据类型",index = 5)private String dataType;/*** 备注*/@ExcelProperty(value = "备注",index = 6)private String remarks;/*** 对接单位项目内容*/@ExcelProperty(value = "对接单位项目内容",index = 7)private String healthProjectContent;/*** 对接单位项目说明*/@ExcelProperty(value = "对接单位项目说明",index = 8)private String healthProjectExplain;}

4:导入已完成。当然这里还可以去做对excel的每行 每列 做一些数据约束校验。这个 可以去对阿里的一个类去重写方法。

5:测试环节:

通常用swagger测试,很简单。

因为api的参数是MultipartFile类型,所以入参直接是现在文件,如图:选择模板一致的excel直接上传文件即可。

也可以用postman上传文件:

详细操作地址如下:

(2条消息) Postman Post请求上传文件_xulong5000的专栏-CSDN博客

二:下载模板

1:默认上面的导入功能已完成,所以 pom文件不再描述,

2:先写一个工具类ExcelUtil

public class ExcelUtil {/*** 导出* @param response* @param data* @param fileName* @param sheetName* @param clazz* @throws Exception*/public static void writeExcel(HttpServletResponse response, List<? extends Object> data, String fileName, String sheetName, Class clazz) throws Exception {//表头样式WriteCellStyle headWriteCellStyle = new WriteCellStyle();//设置表头居中对齐headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);//内容样式WriteCellStyle contentWriteCellStyle = new WriteCellStyle();//设置内容靠左对齐contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);EasyExcel.write(getOutputStream(fileName, response), clazz).excelType(ExcelTypeEnum.XLSX).sheet(sheetName).registerWriteHandler(horizontalCellStyleStrategy).doWrite(data);}private static OutputStream getOutputStream(String fileName, HttpServletResponse response) throws Exception {fileName = URLEncoder.encode(fileName, "UTF-8");response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf8");response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");response.addHeader("Access-Control-Expose-Headers", "Content-disposition");return response.getOutputStream();}

3:在控制器中添加一个下载模板方法:

  /*下载模板*/@GetMapping("/downloadTemplate")@ApiOperation(value = "下载模板", notes = "下载模板", produces = "application/octet-stream")public void downloadTemplate(HttpServletResponse response){String fileName = "对接单位细项导入模板";String sheetName="对接单位细项导入模板";List<HealthTargetImport> teacherExcelList = new ArrayList<>();HealthTargetImport teacherExcel = new HealthTargetImport();teacherExcel.setHealthCode("healthCode");
//        teacherExcel.setIntro("清华毕业,高材生");
//        teacherExcel.setCareer("资深讲师");
//        teacherExcel.setSort(1);
//        teacherExcel.setLevel(1);teacherExcelList.add(teacherExcel);try {//TeacherExcel.class对应你的模板类//teacherExcelList模板的例子//也可以使用这种方式导出你查询出数据excel文件ExcelUtil.writeExcel(response,teacherExcelList,fileName,sheetName,HealthTargetImport.class);} catch (Exception e) {System.out.println(e.getCause());}}

4:这里如果用postmat去测试 或者用swagger测试都会返回乱码,需要注意:

java-导入 导出 下载模板 等功能相关推荐

  1. 帝国cms如何导入php模板,帝国cms模板导入导出及模板组功能介绍

    为了使网站能随心所欲更换风格与共享模板,EmpireCMS引入了模板组功能. 模板组的三大主要功能: 1.模板导出与导入,模板共享更加方便. 2.多模板并存. 3.随时更换网站模板. 4.单个ECMS ...

  2. EasyExcel导入导出下载模板(带下拉)

    EasyExcel导入导出网上资料很多,这里就不多做描述了,总之就是一款比较轻而小,易用的excel操作工具包:这里在项目中使用到,做下笔记.以及表格中下拉框的实现: 声明:本文思路是借鉴于某大神的, ...

  3. ant Desgin vue 导入 导出 下载模板

    先说导入吧, 首先 我们先发请求 代码如下: 按照自己的接口发请求,因为我这个用的是封装的, 因为我这个请求是总导入,好多个用一个,所以我们定义importType类型,来区分 //导入档案总 exp ...

  4. java中Excel导入,下载模板,附带前端展示

    java中Excel导入,下载模板,附带前端展示 后台下载模板代码 /*** 多个模板下载*/@RequestMapping(value = "/downloadExcel", m ...

  5. 【Java实现导出Word文档功能 XDocReport +FreeMarker】

    Java实现导出Word文档功能(XDocReport +FreeMarker) 前言 在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表.医院的患者统计报表.电商平台的 ...

  6. java导入导出excel操作(jxl)

    java导入导出excel操作(jxl) Java解释Excel数据(jxl.jar包的使用) 关键字: java excel jxl.jar jxl.jar 包 下载地址: http://www.a ...

  7. java 导入导出excel表格

    java 导入导出excel表格 业务上有需求上传excel表格并读取内容,本文记录一下该方法 表格导入 引入相应的工具包 <dependency><groupId>cn.af ...

  8. java导入导出excel_Java导入导出Excel工具 easyexcel

    Java导入导出Excel工具  easyexcel 做Java开发的同学,尤其是做管理后台的同学绝大多数都会接触到报表系统,这时候就少不了Excel的导入和导出了.Java解析生成Excel比较有名 ...

  9. java excel 饼图,java 导入导出excle 和 生成柱状图饼状图的demo/excle数据如何转成饼状图...

    在EXCEL中,如何把表格中的数据转换成饼状图? 在Excel中,把中的数据转换状图的操作步骤如下: 想转换的数据源,插入饼状图,Excel会自动根据选择的数据源生成饼状图.接下来,可以自定义饼状图的 ...

  10. java导入导出压缩包

    java导入导出压缩包 最近有个需求,需要将导入导出压缩包格式的JSON文件,然后存入数据库中,特整理如下: 一:首先是导出压缩包 1.首先是controller /*** 接口必填配置导出** @a ...

最新文章

  1. plsql programming 10 日期和时间戳
  2. java validation_java bean validation 参数验证
  3. Vue蚂蜂窝Vue-cli+webpack做的
  4. 计算feature map大小
  5. 【Python基础】用Python制作漂亮的流动桑基图
  6. Java中的堆栈和队列
  7. 本地连不上远程mysql数据库(2)
  8. 地图统计_博客 城市访问量统计并且通过Echarts+百度地图展示
  9. 【Elasticsearch】十九种Elasticsearch字符串搜索方式
  10. JDK8新特性(十五)之重复注解、类型注解
  11. win7 oracle数据库删除用户名,win7操作系统、 oracle10g 数据库创建、卸载 用户名的创建 、删除...
  12. phpstudy for linux版环境安装
  13. 如何把linux生成镜像,如何把当前ubuntu系统做成镜像
  14. python socket 域名_python用socket发送http请求
  15. babel-preset-env使用介绍
  16. R语言ETL工程:连接(join)
  17. 经典剖析电源PCB布板与EMC的关系(上)
  18. android系统设置默认字体,如何获取Android设备的默认字体?
  19. 武汉大学计算机学院 夏令营,武汉大学计算机学院2020保研夏令营通知
  20. Doris0.13.15升级至0.14.12.4故障[Bug] NPE when replaying CheckConsistencyJob

热门文章

  1. Lorenz混沌系统建模与电路仿真实现
  2. Android知识点 121 —— AlarmManager与RTC唤醒
  3. C4D插件X-Particles粒子特效(三)
  4. 点扩散函数(PSF)的模型及求取
  5. HTML5期末大作业:电影网站设计——电影动漫言叶之庭(4页) web前端课程设计_web前端课程设计代码,web课程设计-HTML网页制作代码
  6. 串口通信协议之SPI通信协议
  7. Allegro之测量时显示两种单位(mil mm)
  8. 工具资源合集【持续更新】文字识别、英文写作、频段查询
  9. 微信小程序——微信授权获取手机号弹窗(官方自带)
  10. 桌面计算机系统安装系统文件,电脑重装系统后还原桌面文件步骤