我的编程空间,编程开发者的网络收藏夹
学习永远不晚

EasyExcel导出Excel文件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

EasyExcel导出Excel文件

导出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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

EasyExcel导出Excel文件

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

下载Word文档

猜你喜欢

java如何使用EasyExcel导入导出excel

这篇文章主要介绍了java如何使用EasyExcel导入导出excel,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、准备工作1、导包
2023-06-15

使用EasyExcel实现Excel的导入导出

文章目录 前言一、EasyExcel是什么?二、使用步骤1.导入依赖2.编写文件上传配置3.配置表头对应实体类4.监听器编写5.控制层6.前端代码 总结 前言 在真实的开发者场景中,经常会使用excel作为数据的载体,进行
2023-08-17

Python导出Excel文件

根据之前导出到txt文件的贴吧爬虫内容示例:title:片花 《战狼2》要的dian    firstAuthor:可爱的... reNum:6    content:关注 弓重 hao→ ziyuanhuoqu 回 战狼2   lastA
2023-01-31

Java+EasyExcel如何实现文件的导入导出

这篇文章将为大家详细讲解有关Java+EasyExcel如何实现文件的导入导出,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。引言项目中需要Excel文件的导入与导出Excel并下载,例如,导入员工信息,导
2023-06-22

java实现excel的导出之使用easyExcel

前言 在我们的项目需求中,经常会遇到导出的需求,其中excel的导出最为常见。生成Excel比较有名的框架有Apache poi,jxl等,但他们都存在一个严重的问题就是非常的耗内存,如果你的系统并发量不大的话可能还行,但是一旦并发上来后一
2023-08-18

利用模板导出文件之XLSTransformer导出excel文件

使用XLSTransformer库导出excel文件的步骤如下:1. 安装XLSTransformer库:在命令行中运行`pip install openpyxl xlrd xlwt xlutils`命令进行安装。2. 导入XLSTrans
2023-09-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录