本案例为测试easyexcel读取,写入excel

开发工具:idea+maven3+springmvc4+spring4+mybatis3+mysql5.7

easyexcel版本:

 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>1.1.2-beta5</version>
</dependency>

使用的工具类:easyexcel工具类

入参Dto:

@Getter
@Setter
@Accessors(chain = true)
public class ExportDto implements Serializable {private static final long serialVersionUID = 545300882882790732L;/*** 人群洞察类型:1AIPL人群洞察2流转人群洞察3人群包人群洞察*/private Integer insightType;/*** 品牌编码*/private String brandCode;/*** 品类编码*/private String categoryCode;/*** 人群类型:0全部人群 1认知2兴趣3购买4忠诚 5流失 6未知*/private String startCrowdType;/*** 人群类型:0全部人群 1认知2兴趣3购买4忠诚 5流失 6未知*/private String endCrowdType;/***流转人群洞察:1未流转2流转*/private String flowType;/*** 人群包类型*/private String audienceCode;/*** 大盘类型:1行业大盘2苏宁大盘,默认为行业大盘*/@Min(1)private Integer grailType = 1;}

出参Vo:

@Getter
@Setter
public class ExportVo extends BaseRowModel {/*** 纬度*/@ExcelProperty(value = {"纬度"}, index = 0)private String dimension;/*** 特征*/@ExcelProperty(value = {"特征"}, index = 1)private String feature;/*** 占比*/@ExcelProperty(value = {"占比"}, index = 2)private String insightPercent;/*** 大盘*/@ExcelProperty(value = {"大盘"}, index = 3)private String grailPercent;/*** 对比大盘*/@ExcelProperty(value = {"对比大盘"}, index = 4)private String comparePercent;}

导出一个sheet:

控制层:(数据量控制在20万以内)

@CrossOrigin
@RestController
@RequestMapping("/mip/export")
public class ExportController extends BaseController {/*** 基础属性导出* @param insightType* @param brandCode* @param categoryCode* @param startCrowdType* @param endCrowdType* @param flowType* @param audienceCode* @param request* @return*/@GetMapping("/basicAttributeExport")public void basicAttributeExport(@RequestParam(value = "insightType")Integer insightType,@RequestParam(value = "brandCode")String brandCode,@RequestParam(value = "categoryCode")String categoryCode, String startCrowdType, String endCrowdType, String flowType,String audienceCode, HttpServletRequest request, HttpServletResponse response) {ExportDto dto = new ExportDto().setInsightType(insightType).setBrandCode(brandCode).setCategoryCode(categoryCode).setStartCrowdType(startCrowdType).setEndCrowdType(endCrowdType).setFlowType(flowType).setAudienceCode(audienceCode);exportService.basicAttributeExport(dto, response);}
}

业务层:

@Service
public class ExportServiceImpl implements ExportService {//log日志private static final Logger LOGGER = LoggerFactory.getLogger(ExportServiceImpl.class);@Autowiredprivate DalClient dalClient;@Autowiredprivate IExportAssertionService exportAssertionService;/*** 基础属性* @param dto* @param response*/public void basicAttributeExport(ExportDto dto, HttpServletResponse response) {LOGGER.info("基础属性导出入参为:{}", new Gson().toJson(dto));//查询结果List<ExportVo> list = queryBasicAttribute(dto);String fileName = SNConstant.BASICATTRIBUTE + DateUtils.getCurrentDateStr("yyyyMMddHHmmss");String sheetName = SNConstant.BASICATTRIBUTE;//方法一:poi导出//ExcelUtil.downLoadExcel(response, list, fileName, sheetName, ExportVo.class);//方法二:easyexcel导出EasyExcelUtil.writeExcelWithModel(response, list, fileName, sheetName, ExportVo.class, ExcelTypeEnum.XLSX);}
}

postman测试:

导出效果:

导出多个sheet:

控制层:(数据量控制在20万以内)

/*** 用户洞察中心导出* @param insightType* @param brandCode* @param categoryCode* @param startCrowdType* @param endCrowdType* @param flowType* @param audienceCode* @param request* @param response* @return*/@GetMapping("/downLoadInsight")public void downLoadInsight(@Validated@NotNull(message = "%custom%人群洞察类型不可为空")@RequestParam(value = "insightType")Integer insightType,@Validated@NotNull(message = "%custom%品牌编码不可为空")@RequestParam(value = "brandCode")String brandCode,@RequestParam(value = "categoryCode")String categoryCode, String startCrowdType, String endCrowdType, String flowType,String audienceCode, HttpServletRequest request, HttpServletResponse response) {ExportDto dto = new ExportDto().setInsightType(insightType).setBrandCode(brandCode).setCategoryCode(categoryCode).setStartCrowdType(startCrowdType).setEndCrowdType(endCrowdType).setFlowType(flowType).setAudienceCode(audienceCode);exportService.downLoadInsight(dto, response);}

业务层:

/*** 用户洞察中心导出* @param dto* @param response*/public void downLoadInsight(ExportDto dto, HttpServletResponse response) {LOGGER.info("用户洞察中心导出入参为:{}", new Gson().toJson(dto));long l1 = System.currentTimeMillis() / 1000;String fileName = SNConstant.USERINSIGHT + DateUtils.getCurrentDateStr("yyyyMMddHHmmss");String sheetName1 = SNConstant.BASICATTRIBUTE;List<ExportVo> list1 = queryBasicAttribute(dto);String sheetName2 = SNConstant.LIVINGCONDITION;List<ExportVo> list2 = queryLivingCondition(dto);String sheetName3 = SNConstant.PRODUCTPREFERENCE;List<ExportVo> list3 = queryProductPreference(dto);String sheetName4 = SNConstant.MEDIAPREFERENCE;List<ExportVo> list4 = queryMediaPreference(dto);Map<String, List<? extends BaseRowModel>> dataMap = new HashMap<>();dataMap.put(sheetName1, list1);dataMap.put(sheetName2, list2);dataMap.put(sheetName3, list3);dataMap.put(sheetName4, list4);//方法一:Map存储数据//EasyExcelUtil.writeExcelWithModelSheet(response, dataMap, fileName, ExcelTypeEnum.XLSX);//方法二:工厂方法EasyExcelUtil.writeExcelWithSheets(response, list1, fileName, sheetName1, ExportVo.class, ExcelTypeEnum.XLSX).write(list2, sheetName2, ExportVo.class).write(list3, sheetName3, ExportVo.class).write(list4, sheetName4, ExportVo.class).finish();long l2 = System.currentTimeMillis() / 1000;System.out.println("导出耗时:" + (l2 - l1));}

导出效果:

easyexcel读取excel(一个sheet)

控制层:(数据量控制在20万以内)

@PostMapping("/readExcelWithModel")public ResponseEntity<BaseResponse> readExcelWithModel(@RequestParam(value = "file", required = true)MultipartFile file) {try {String fileName = file.getOriginalFilename();if (fileName == null || (!fileName.toLowerCase().endsWith(".xls") && !fileName.toLowerCase().endsWith(".xlsx"))) {throw new FieldInvalidException("readExcelWithModel", "文件格式错误!");}InputStream inputStream = new BufferedInputStream(file.getInputStream());List<ExportVo> data=EasyExcelUtil.readExcelWithModel(inputStream, ExportVo.class, ExcelTypeEnum.XLSX);return ResponseEntity.ok(BaseResponse.success().setResult(data));} catch (IOException e) {e.printStackTrace();}return ResponseEntity.ok(new BaseResponse("读取文件失败").setResult(null));}

postman测试效果:

easyexcel读取excel(多个sheet)

控制层:(数据量控制在20万以内)

@PostMapping("/readExcelWithModelSheet")public ResponseEntity<BaseResponse> readExcelWithModelSheet(@RequestParam(value = "file", required = true)MultipartFile file) {try {String fileName = file.getOriginalFilename();if (fileName == null || (!fileName.toLowerCase().endsWith(".xls") && !fileName.toLowerCase().endsWith(".xlsx"))) {throw new FieldInvalidException("readExcelWithModel", "文件格式错误!");}InputStream inputStream = new BufferedInputStream(file.getInputStream());List<ExportVo> data=EasyExcelUtil.readExcelWithModelSheet(inputStream, ExportVo.class, ExcelTypeEnum.XLSX);return ResponseEntity.ok(BaseResponse.success().setResult(data));} catch (IOException e) {e.printStackTrace();}return ResponseEntity.ok(new BaseResponse("读取文件失败").setResult(null));}

postman测试效果:

easyexcel1.0导出excel测试案例相关推荐

  1. maatwebsite/Excel 3.0 导出 Excel 如何设置长数字为文本

    maatwebsite/Excel 3.0 导出 Excel 如何设置长数字为文本 我这里是 'C' 这几列是超过 15 位数字,自动转换为了科学计数法,所以直接绑定这几列即可. https://gi ...

  2. 导出excel测试-excel行列限制

    导出excel测试时,需要测试超过excel行列限制的情况. excel2003,行数最多为65535,列数最多为255. 导出时,如果没有处理超过该限制的情况,则会出错. 如果不想在代码中解决该问题 ...

  3. vue3.0导出excel带格式

    这个真的困扰了我整整一天,我尝试了xlxs file-saver两个组件的版本,怎么搞都不行 先不说vue3.0 不能import进来,只能require('xlxs'),require('file- ...

  4. 解决导出EXCEL自动将长的数字的字符串变成E+的科学计数法

    导出Excel时候出现一个问题: 比如是"订单号"."手机号"."身份证"等等,他是一个一长串的数字组成的字符串,导出到EXCEL之后off ...

  5. EasyExcel导出Excel表格到浏览器,并通过Postman测试导出Excel【入门案例】

    一.前言 小编最近接到一个导出Excel的需求,需求还是很简单的,只需要把表格展示的信息导出成Excel就可以了,也没有复杂的合并列什么的. 常见的导出Excel的技术: hutool easyExc ...

  6. 【测试技能分享】xmind思维导图导出excel层级表格转换为测试场景案例分享实践附脚本

    1.通过xmind输出测试场景: 每个项目不同,xmind不一内容不一致,可按自己负责项目或测试模块进行测试场景设计 2.导出excel 通过xmind导出功能,输出excle 3.通过python脚 ...

  7. jxl导入/导出excel(网上的案例)

    假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情 ...

  8. 基于微信小程序云开(统计学生信息并导出excel)2.0版

    前言 随着移动端的不断发展,人们大部分的办公及生活应用都开始趋向于移动端.然而在2017年"微信之父"张小龙带领团队,开发了一款叫做微信小程序的东西,它的出现打破了人们认识移动端的 ...

  9. 案例分享:Qt高频fpga采集数据压力位移速度加速度分析系统(通道配置、电压转换、采样频率、通道补偿、定时采集、距离采集,导出excel、自动XY轴、隐藏XY轴、隐藏显示通道,文件回放等等)

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/120345072 红胖子(红模仿)的博文大全:开发技术集 ...

  10. 案例分享:医疗流式细胞术数据文件(.fcs)导出excel表工具

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/109473140 各位读者,知识无穷而人力有穷 ...

最新文章

  1. 装饰模式(Decorator Pattern)--------结构型模式
  2. 【SpringCloud】高可用Eureka
  3. 基于ATT和CK™框架的开放式方法评估网络安全产品
  4. xampp安装后apache(端口占用)/mysql无法打开(Attempting to start MySQL service...)/Mysql无法修改端口
  5. GPU Gems2 - 12 基于贴面的纹理映射(Tile-Based Texture Mapping)
  6. 视图添加字段_Odoo开发教程2-为模型添加字段
  7. Linux中断 - tasklet
  8. mysql v7.11_编译后MySQL v5.7.11安装出错
  9. 2020已过大半,量子计算机发展如何了?
  10. 视频内容付费系统整站源码
  11. Drools规则引擎讲解
  12. CREO:CREO软件之零件【模型】之操作、基准、形状、扫描、工程、编辑、曲面的简介及其使用方法(图文教程)之详细攻略
  13. android:style/theme.holo.light,Galaxy Nexus上的Android Theme.Holo.Light在模拟器没有的时候有灰色背景...
  14. uni.navigateTo失效
  15. java全栈系列之JavaSE--递归详解022
  16. 树莓派文字转语音 python_树莓派的语音识别
  17. ieee latex 双栏_IEEE 投稿Latex设置
  18. 人类一败涂地steam创意工坊地图制作教程交流
  19. 获取距离某个坐标点最近的几个坐标(计算距离)
  20. ffmpeg命令分析-re

热门文章

  1. keil格式化代码方法
  2. 前端推荐的书籍学习(必看)
  3. netcore读取json文件_.Net Core读取Json配置文件
  4. 大猩猩优化算法(Matlab代码实现)
  5. 基于Java的超市进销存管理系统的设计与实现
  6. 【5G/4G】AT Command 详细教程(基于3GPP Spec 27.007)
  7. 十一青岛2人4日自助游记
  8. android killer 反编译工具,androidkiller反编译软件使用与踩坑并解决的过程
  9. 输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出
  10. 自动化测试的优缺点分析