广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >EasyExcel导出Excel文件
  • 662
分享到

EasyExcel导出Excel文件

exceljava开发语言 2023-10-20 13:10:08 662人浏览 薄情痞子
摘要

导出excel 方法一 导入EasyExcel依赖 com.alibaba easyexcel 创建实体类 @Data@AllArgsConstructor@NoArgsConstruc

导出excel

方法一

导入EasyExcel依赖

<!--        导出excel--><dependency>    <groupId>com.alibaba</groupId>    <artifactId>easyexcel</artifactId></dependency>

创建实体类

@Data@AllArgsConstructor@NoArgsConstructorpublic class OrderExcel {    //订单号    @ExcelProperty("订单编号")    private long orderId;    //xxxxxx}

OrderServiceImpl

public void excelWrite(){    //1、创建一个文件对象    File excelFile = new File("E:/Order.xlsx");    //2、判断文件是否存在,不存在则创建一个Excel文件    if (!excelFile.exists()) {        try {            excelFile.createNewFile();//创建一个新的文件        } catch (ioException e) {            e.printStackTrace();        }    }    //3、指定需要那个class去写。然后写到第一个sheet,名字为模版,然后文件流会自动关闭    EasyExcel.write(excelFile, OrderExcel.class).sheet("订单模版").doWrite(queryToExcel());}public List<OrderExcel> queryToExcel() {//业务代码,获取数据集    List<Order> orders = xxxxxx.xxxxxx(xxxxxx);    List<OrderExcel> excels = new ArrayList<>();    //遍历数据集,导出Excel    for (int i = 0; i < orders.size(); i++) {        Order order = orders.get(i);        OrderExcel data = new OrderExcel();        data.setOrderId(order.getOrderId());        excels.add(data);    }    return excels;}

如果希望多个sheet导出那么可以

public String toExcel(String b, String s, String e ,String filePath) {   //业务代码    //xxxxxx    //1、创建一个文件对象    // 输出流    OutputStream outputStream = null;    try {        outputStream = new FileOutputStream(new File(filePath));        //3、指定需要那个class去写。然后写到第i个sheet        ExcelWriter excelWriter = EasyExcel.write(outputStream).build();        int i=0;        //业务代码        for (xxxxxx) {                       List<DataExcel> excels = new ArrayList<>();            //业务代码,将xxxxxx导入到excels中            xxxxxxmap.entrySet().forEach(f->excels.add(new DataExcel(f.geTKEy(),f.getValue())));            //不同的表数据写在不同的sheet            WriteSheet build = EasyExcel.writerSheet(i, entry.getKey().getGroupName()).head(DataExcel.class).build();            i++;            excelWriter.write(excels,build);        }        excelWriter.finish();    }catch (Exception e){        e.printStackTrace();    }    return "导出Excel成功";}

测试

@Testpublic void TestToExcel(){    orderService.excelWrite();}

方法二

导入EasyExcel依赖

<dependency>    <groupId>com.alibabagroupId>    <artifactId>easyexcelartifactId>dependency>

编写ExcelUtil

@Componentpublic class ExcelUtil {    public ExcelWriter getExcelWriter(httpservletResponse response){        //内容样式策略        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();        //垂直居中,水平居中        contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);        contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);        //设置边框        contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);        contentWriteCellStyle.setBorderTop(BorderStyle.THIN);        contentWriteCellStyle.setBorderRight(BorderStyle.THIN);        contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);        // 字体策略        WriteFont contentWriteFont = new WriteFont();        // 字体大小        contentWriteFont.setFontHeightInPoints((short) 12);        contentWriteCellStyle.setWriteFont(contentWriteFont);        //头策略使用默认 设置字体大小        WriteCellStyle headWriteCellStyle = new WriteCellStyle();        WriteFont headWriteFont = new WriteFont();        headWriteFont.setFontHeightInPoints((short) 12);        headWriteCellStyle.setWriteFont(headWriteFont);        ExcelWriter excelWriter;        //ExcelWriter写入对象        try {            //这是为了导出流,在浏览器下载excel因此选择response.getOutputStream             excelWriter= EasyExcel.write(response.getOutputStream()).reGISterWriteHandler(new HorizontalCellStyleStrategy(headWriteCellStyle,contentWriteCellStyle)).build();                        //如果导出到本地            //excelWriter= EasyExcel.write(new FileOutputStream("FilePath")).registerWriteHandler(new HorizontalCellStyleStrategy(headWriteCellStyle,contentWriteCellStyle)).build();             return excelWriter;        }catch (FileNotFoundException e){            e.printStackTrace();        } catch (IOException e) {            throw new RuntimeException(e);        }        return null;    }    //发送响应流方法,无论是Word,excel,text都实用的响应流类    public void setResponseHeader(HttpServletResponse response, String fileName) {        try {            try {                fileName = new String(fileName.getBytes(),"ISO8859-1");            } catch (UnsupportedEncodingException e) {                e.printStackTrace();            }            //浏览器检测文件类型,有两种响应:第一种是MIME(多功能Internet 邮件扩充服务,最早用于邮件系统,后来拓展到浏览器中);            // 另一种,当浏览器无法确定文件类型时,就是application/octet-stream类型。            response.setContentType("application/octet-stream;charset=ISO8859-1");            response.setHeader("Content-Disposition", "attachment;filename="+ fileName);            //关闭缓存            response.addHeader("Pargam", "no-cache");            response.addHeader("Cache-Control", "no-cache");        } catch (Exception ex) {            ex.printStackTrace();        }    }}

编写Service层代码

public ExcelWriter toExcel(String c,String u,ExcelWriter excelWriter){    log.info("导出Excel,code:{},userId:{}",code,userId);    //获取表数据    //xxxxxx    //获取表头信息    //业务代码    List<List<String>> titleList = xxxxxx;    //创建表格对象    WriteTable table = new WriteTable();    //设置表头    table.setHead(titleList);    //获取所有表   //xxxxxx    //设置sheet编号    int index = 1;    //遍历多个表,(如果有多个表)    for (T t : TList) {        //根据需要写业务代码        //xxxxxx                //创建Sheet对象        WriteSheet sheet = new WriteSheet();        //设置第N个Sheet        sheet.setSheetNo(index);        //设置Sheet名称        sheet.setSheetName(config.getPositionName());        //获取信息列表        List<List<Object>> contentsList = xxxxxx;        excelWriter.write(contentsList,sheet,table);        index++;    }    log.info("导出成功");    return excelWriter;}

controller层代码

@PostMapping("futures/toExcel")public void toExcel(@RequestBody T t, HttpServletResponse response){        //业务代码    //if(xxxxxx){        //xxxxxx    //}    //文件名    String fileName = t+"-"+ DateUtil.date().toDateStr()+".xlsx";    //设置导出流的response信息    excelUtil.setResponseHeader(response,fileName);    ExcelWriter excelWriter = excelUtil.getExcelWriter(response);    String code = baseCondition.getCode();    excelWriter = excelService.toExcel(xxxxxx, xxxxxx,excelWriter);    //释放资源    excelWriter.finish();}

方法一与方法二都使用了EasyExcel进行Excel的导出,区别在于方法一建立了实体类进行Excel的导出,这样的好处是可以直接使用实体类对象进行数据的导出,每一个列和标题都是对应关系。方法二则直接使用了List来导出,每一行数据作为一个list,这样的好处就是可以设置到每一行的每一列。除此之外,方法二还使用了流进行导出,在网页端点击导出Excel按钮发送请求给后端之后,会弹出下载的文件。

来源地址:https://blog.csdn.net/weixin_46016309/article/details/129284058

--结束END--

本文标题: EasyExcel导出Excel文件

本文链接: https://www.lsjlt.com/news/433021.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • EasyExcel导出Excel文件
    导出Excel 方法一 导入EasyExcel依赖 com.alibaba easyexcel 创建实体类 @Data@AllArgsConstructor@NoArgsConstruc...
    99+
    2023-10-20
    excel java 开发语言
  • EasyExcel实现Excel文件导入导出功能
    一、EasyExcel简介 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的fu...
    99+
    2023-09-15
    excel java Powered by 金山文档
  • 【JAVA】easyexcel 导出excel文件带多个图片
    最终效果  pom版本 com.alibaba easyexcel 3.0.5 实现代码 package com.alibaba.easyexcel.test.demo.write;import com.a...
    99+
    2023-09-05
    java excel easyexcel 导出图片列 图片导出excel
  • java使用EasyExcel导入导出excel
    目录一、准备工作 1、导包二、了解注解 1、常用注解2、@ExcelProperty注解 3、@ColumnWith注解 4、@ContentFontStyle注解 5、@Conte...
    99+
    2022-11-12
  • 【Java结合EasyExcel,模板文件填充并导出Excel】
    需求描述: 客户网页上填一个Excel表格,数据存到数据库,这个导出接口要做的就是从数据库中的获取数据并填充到模板文件,最后通过response返给前端一个下载链接,用户即可获取填充好的Excel文件。 方案一: 一开始使用的是easypo...
    99+
    2023-09-14
    java
  • EasyExcel实现excel导出(多sheet)
    EasyExcel官方地址: EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy ExcelEasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。他能让你在不用考虑性能、内存...
    99+
    2023-09-03
    java 开发语言 spring boot
  • java如何使用EasyExcel导入导出excel
    这篇文章主要介绍了java如何使用EasyExcel导入导出excel,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、准备工作1、导包<!-- poi&nb...
    99+
    2023-06-15
  • 使用EasyExcel实现Excel的导入导出
    文章目录 前言一、EasyExcel是什么?二、使用步骤1.导入依赖2.编写文件上传配置3.配置表头对应实体类4.监听器编写5.控制层6.前端代码 总结 前言 在真实的开发者场景中,经常会使用excel作为数据的载体,进行...
    99+
    2023-08-17
    java
  • Java+EasyExcel实现文件的导入导出
    目录引言效果图项目结构核心源码核心实体类核心监听器类EasyExcel导入文件EasyExcel导出文件引言 项目中需要Excel文件的导入与导出Excel并下载,例如,导入员工信息...
    99+
    2022-11-12
  • SpringBoot整合EasyExcel实现文件导入导出
    目录准备工作 1. 引入pom依赖2. 实现功能 Excel文件下载 3. 日志实体类4. 接口和具体实现 Excel文件导入 5. 文件读取配置 6. 读取测试7. 附上自定义属性...
    99+
    2022-11-12
  • Python导出Excel文件
    根据之前导出到txt文件的贴吧爬虫内容示例:title:片花 《战狼2》要的dian    firstAuthor:可爱的... reNum:6    content:关注 弓重 hao→ ziyuanhuoqu 回 战狼2   lastA...
    99+
    2023-01-31
    文件 Python Excel
  • Java——使用EasyExcel导出动态列的Excel
    有些时候列表的列可能是动态的,需要根据动态表头导出Excel文件,这时候可以使用下面的方法解决: public static void exportDynamicExcel(Set includeColumnFiledNam...
    99+
    2023-09-09
    java excel
  • java实现excel的导出之使用easyExcel
    前言 在我们的项目需求中,经常会遇到导出的需求,其中excel的导出最为常见。生成Excel比较有名的框架有Apache poi,jxl等,但他们都存在一个严重的问题就是非常的耗内存,如果你的系统并发量不大的话可能还行,但是一旦并发上来后一...
    99+
    2023-08-18
    java excel 开发语言
  • Java+EasyExcel如何实现文件的导入导出
    这篇文章将为大家详细讲解有关Java+EasyExcel如何实现文件的导入导出,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。引言项目中需要Excel文件的导入与导出Excel并下载,例如,导入员工信息,导...
    99+
    2023-06-22
  • Java 导出Excel表格生成下拉框-EasyExcel
    1.导入EasyExcel,maven依赖 com.alibaba easyexcel 2.2.10 2.添加EasyExcelUtil工具...
    99+
    2023-09-22
    java excel 数据库
  • 利用模板导出文件之XLSTransformer导出excel文件
    使用XLSTransformer库导出excel文件的步骤如下:1. 安装XLSTransformer库:在命令行中运行`pip i...
    99+
    2023-09-14
    excel
  • React实现导入导出Excel文件
    目录表示层 业务层 核心插件xlsx excel 导入 excel 导出 excel 导出插件(js-export-excel) 实现效果结语 表示层 这里我是使用的是antd的U...
    99+
    2022-11-12
  • JavaScript实现excel文件导入导出
    目录一、需求场景描述1.此时前端上传解析excel文件可能更合适2.此时前端下载excel文件可能优雅一些二、实现思路分析1.导入excel文件实现思路分析2.导出excel文件实现...
    99+
    2022-11-13
  • EasyExcel读取EXcel文件内容
    目录 一 官方文档介绍 二 读取文件内容 1.根据文档内容建立读对象 2.创建读监听器 3.测试类代码 一 官方文档介绍 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗...
    99+
    2023-09-30
    JAVA
  • EasyExcel轻松读取Excel文件!
    EasyExcel是一个Java库,用于快速、简单地读写Excel文件。要使用EasyExcel,您首先需要将其添加为项目的依赖: 如果使用Maven,可以添加以下依赖项: com.alibaba...
    99+
    2023-09-07
    excel java 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作