首先为文件创建相对路径

​// 文件名String fileName = "测试表格_".concat(DateUtil.nowDateTime(Constants.DATE_TIME_FORMAT_NUM)).concat(BaixiangUtil.randomCount(111111111, 999999999).toString()).concat(".xlsx");// 文件名部分String newFileName = UploadUtil.getWebPath() + fileName;String filePath = UploadUtil.getServerPath();// 判断是否存在当前目录,不存在则创建File file = new File(filePath);if (!file.exists()) {file.mkdirs();}fileName = filePath.concat(fileName);​

导出单个sheet

        //这里是你指定的相对路径         File file1 = new File(fileName);//这里是数据库查询出需要导出的内容List<student> list =getDate();//  调用easyexcel里面的方法实现写操作// write方法两个参数:第一个参数文件路径名称,第二个参数实体类classEasyExcel.write(file1.getAbsolutePath(),SettlementDivideExcel.class).sheet(getStatus(request.getSettlementStatus())).doWrite(list );

导出多个sheet

 // 方法1 如果写到同一个sheetFile file1 = new File(fileName);ExcelWriter excelWriter = null;try {// 这里 需要指定写用哪个class去写excelWriter = EasyExcel.write(fileName, DemoData.class).build();// 这里注意 如果同一个sheet只要创建一次WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();// 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来for (int i = 0; i < 5; i++) {// 分页去数据库查询数据 这里可以去数据库查询每一页的数据List<DemoData> data = data();excelWriter.write(data, writeSheet);}} finally {// 千万别忘记finish 会帮忙关闭流if (excelWriter != null) {excelWriter.finish();}}// 方法2 如果写到不同的sheet 同一个对象File file1 = new File(fileName);try {// 这里 指定文件excelWriter = EasyExcel.write(fileName, DemoData.class).build();// 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来。这里最终会写到5个sheet里面for (int i = 0; i < 5; i++) {// 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样WriteSheet writeSheet = EasyExcel.writerSheet(i, "模板" + i).build();// 分页去数据库查询数据 这里可以去数据库查询每一页的数据List<DemoData> data = data();excelWriter.write(data, writeSheet);}} finally {// 千万别忘记finish 会帮忙关闭流if (excelWriter != null) {excelWriter.finish();}}// 方法3 如果写到不同的sheet 不同的对象File file1 = new File(fileName);try {// 这里 指定文件excelWriter = EasyExcel.write(fileName).build();// 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来。这里最终会写到5个sheet里面for (int i = 0; i < 5; i++) {// 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样。这里注意DemoData.class 可以每次都变,我这里为了方便 所以用的同一个class 实际上可以一直变WriteSheet writeSheet = EasyExcel.writerSheet(i, "模板" + i).head(DemoData.class).build();// 分页去数据库查询数据 这里可以去数据库查询每一页的数据List<DemoData> data = data();excelWriter.write(data, writeSheet);}} finally {// 千万别忘记finish 会帮忙关闭流if (excelWriter != null) {excelWriter.finish();}}

读Excel

@Slf4j
public class EasyExcelUtil {private static Sheet initSheet;static {initSheet = new Sheet(1, 0);initSheet.setSheetName("sheet");//设置自适应宽度initSheet.setAutoWidth(Boolean.TRUE);}/*** 读取少于1000行数据* @param fileStream 文件绝对路径* @return*/public static List<Object> readLessThan1000Row(InputStream fileStream){return readLessThan1000RowBySheet(fileStream,null);}/*** 读小于1000行数据, 带样式* filePath 文件绝对路径* initSheet :*      sheetNo: sheet页码,默认为1*      headLineMun: 从第几行开始读取数据,默认为0, 表示从第一行开始读取*      clazz: 返回数据List<Object> 中Object的类名*/public static List<Object> readLessThan1000RowBySheet(InputStream fileStream, Sheet sheet){
//        if(!StringUtils.hasText(filePath)){
//            return null;
//        }sheet = sheet != null ? sheet : initSheet;//        InputStream fileStream = null;try {
//            fileStream = new FileInputStream(filePath);return EasyExcelFactory.read(fileStream, sheet);
//        } catch (FileNotFoundException e) {
//            log.info("找不到文件或文件路径错误, 文件:{}", fileStream.toString());}finally {try {if(fileStream != null){fileStream.close();}} catch (IOException e) {log.info("excel文件读取失败, 失败原因:{}", e);}}
//        return null;}/*** 读大于1000行数据* @param filePath 文件觉得路径* @return*/public static List<Object> readMoreThan1000Row(String filePath){return readMoreThan1000RowBySheet(filePath,null);}/*** 读大于1000行数据, 带样式* @param filePath 文件觉得路径* @return*/public static List<Object> readMoreThan1000RowBySheet(String filePath, Sheet sheet){if(!StringUtils.hasText(filePath)){return null;}sheet = sheet != null ? sheet : initSheet;InputStream fileStream = null;try {fileStream = new FileInputStream(filePath);ExcelListener excelListener = new ExcelListener();EasyExcelFactory.readBySax(fileStream, sheet, excelListener);return excelListener.getDatas();} catch (FileNotFoundException e) {log.error("找不到文件或文件路径错误, 文件:{}", filePath);}finally {try {if(fileStream != null){fileStream.close();}} catch (IOException e) {log.error("excel文件读取失败, 失败原因:{}", e);}}return null;}/*********************匿名内部类开始,可以提取出去******************************/@Datapublic static class MultipleSheelPropety{private List<? extends BaseRowModel> data;private Sheet sheet;}/*** 解析监听器,* 每解析一行会回调invoke()方法。* 整个excel解析结束会执行doAfterAllAnalysed()方法*/@Getter@Setterpublic static class ExcelListener extends AnalysisEventListener {private List<Object> datas = new ArrayList<>();/*** 逐行解析* object : 当前行的数据*/@Overridepublic void invoke(Object object, AnalysisContext context) {//当前行// context.getCurrentRowNum()if (object != null) {datas.add(object);}}/*** 解析完所有数据后会调用该方法*/@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {//解析结束销毁不用的资源}}}

代码中应用读

 @ApiOperation(value = "测试读")@RequestMapping(value = "/read", method = RequestMethod.POST)public CommonResult<Object> upload(MultipartFile file) throws IOException {List<Object> objects = EasyExcelUtil.readLessThan1000Row(file.getInputStream());for (int i = 1; i < objects.size(); i++) {String orderNo=null;try{orderNo=objects.get(i).toString();}catch (Exception e){return CommonResult.failed("EXCEL数据异常");} return CommonResult.success();}

EasyExcel的简单导出,多sheet导出,读Excel相关推荐

  1. EasyExcel 实现写入多个sheet数据进excel模板并下载

    目录 说明 说明 场景说明:对数据库或者其他数据源读取获取到数据,需要写入到excel完成下载功能,其中一个sheet是固定模板,只需要填充值,另一个sheet是动态的表头和数据需要填充.模板如下图, ...

  2. easyexcel php,使用easyexcel进行简单的表格导入导出功能

    easyexcel只提供一个简单的导出和导入功能,并没有太多的方法进行调用,如果您对PHPExcel非常了解,您也可以引入成功之后直接使用PHPExcel中的方法自己书写规则 easyexcel下载地 ...

  3. easyexcel注解样式无效_使用Model读Excel模型时,只设置注解ExcelProperty的value值读取无效...

    我也遇到 自己实在没辙 自己 用反射 把数据 映射过去 ` package com.thermofisher.dsc.amanda.common.excel.listener; import com. ...

  4. EasyExcel的简单导出

    EasyExcel的简单导出 Controller层代码 @GetMapping("/download") public void download(String name, Ht ...

  5. 使用easyexcel完成复杂表头及标题的导出功能(自定义样式及多sheet导出)

    如需客户端指定excel版本,只需要判断后缀名然后在controller中的.excelType(ExcelTypeEnum.XLS)做指定输出内容格式即可 ***(注意表格行高列宽统一设置是在实体类 ...

  6. easyPoi单sheet与多sheet导出excel简单实用(重点:自动列宽的设置)

    导入依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base< ...

  7. EasyExcel 三分钟搞定导入导出

    前言:本文章教你从零开始,三分钟搞定excel单sheet导出.导入.多sheet导出.导入.excel模板导入单个sheet.多个sheet,废话不多说,直接上代码 1.引入依赖 <!--ex ...

  8. EasyExcel 低内存导出大数据量的Excel方案探索 50万行 50列 (附:实现代码)

    文章目录 1.前言 2.准备工作 3.导出测试 3.1.单次查询.全量导出 3.2. 多次查询,多个文件,单次写入 3.3.多次查询,多个文件,多次写入 3.4.多线程导出探索 3.5.文件打包成ZI ...

  9. R先生一步步教你用EasyExcel导出包含多图片的Excel

    R先生一步步教你用EasyExcel导出包含多图片的Excel 光与光之间的黑暗,路人永不得知 书接上文说到,R先生之前有写过一篇用EasyExel导出包含图片的Excel文件,由于在官方文档并没有找 ...

最新文章

  1. 企业需要建设网站该如何咨询价格呢?
  2. Ubuntu9.10下安装Thinkpad T400 R29无线网卡
  3. 《移动项目实践》实验报告——Android数据存储
  4. js 字符串减去字符串_js关于字符串、条件语句和自加和自减
  5. 邮政银行贷款迟还4个小时就造成信用逾期,如何解决?
  6. 微信小程序 - 五星评分(含半分)
  7. CentOS7安装单机版RabbitMQ集群
  8. html,css颜色,色系
  9. 【译】你不知道的 Chrome 调试工具技巧 第二十天:Workspace的黑魔法
  10. IOS 开展 分别制定了iphone 和 ipad 好? 或开发一个 Universal好?
  11. macos下刻录系统盘
  12. 更改网页alert弹出框样式
  13. 百度人脸接口简单随笔
  14. Tbase 源码 (六)
  15. java的 jre是什么_Java中JRE介绍,JRE是什么
  16. 红外测温之MLX90614教程
  17. Do You Even Need Attention? A Stack of Feed-Forward Layers Does Surprisingly Well on ImageNet
  18. 阿里云服务器 云对象存储OOS(一) ---入门级操作
  19. [NOTE] Pikachu靶场练习笔记
  20. 华为重回Android,被谷歌移除的华为Mate 20 Pro重回Android Q名单

热门文章

  1. Redis实现排行榜、延迟队列、LRU、消息已读未读(Redisson客户端实现)
  2. 介绍电力载波通信技术与目前的技术分类
  3. 乐橙服务器不稳定,乐橙tp1正在连接云服务器
  4. 电脑桌面计算机英语,“电脑桌面”用英文怎么讲?
  5. DOTA数据集分割,并将txt转为xml
  6. Windows 7 升级顾问
  7. 如何使用英特尔® Wi-Fi 6E (Gig+) 产品启用 Wi-Fi 6E/6GHz 频带
  8. 民用建筑工程给水排水设计深度图样_污水混凝与絮凝处理工程技术规范(征求意见稿)编制说明...
  9. 8 种主流数据迁移工具技术选型,yyds!
  10. 时空人工智能提出的背景