easyExcel导出excel的简单使用

Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到KB级别,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型转换的封装,让使用者更加简单方便

easyexcel 项目git地址为: https://github.com/alibaba/easyexcel
官方使用指南见: https://github.com/alibaba/easyexcel/blob/master/quickstart.md

1:使用:

导入依赖maven依赖:

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

2:模型映射

public class DownMonitorExcelSheet1 extends BaseRowModel {
    @ExcelProperty(value = "城市",index = 0)
    private String city;
    @ExcelProperty(value = "项目名字",index = 1)
    private String projectName;
    @ExcelProperty(value = "上刊数",index = 2)
    private Integer skNum;
    @ExcelProperty(value = "下刊数",index = 3)
    private Integer xkNum;

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public Integer getSkNum() {
        return skNum;
    }

    public void setSkNum(Integer skNum) {
        this.skNum = skNum;
    }

    public Integer getXkNum() {
        return xkNum;
    }

    public void setXkNum(Integer xkNum) {
        this.xkNum = xkNum;
    }
}

3:service

 @Override
    public void excelExportDownInfo(String schemeId, String pushDate, HttpServletResponse response) throws IOException {
        String fileName = String.valueOf(System.currentTimeMillis());
        response.setContentType("multipart/form-data");
        response.setCharacterEncoding("utf-8");
        response.addHeader("Content-Disposition", "filename=" + fileName+ ".xlsx");
        String sheet1Name = "下刊监测统计";
        String sheet2Name = "已下刊";
        String sheet3Name = "未下刊";
        ExcelWriter writer = new ExcelWriter(response.getOutputStream(), ExcelTypeEnum.XLSX);
        //写第一个sheet, sheet1  数据全是List<String> 无模型映射关系
        Sheet sheet = new Sheet(1, 0,DownMonitorExcelSheet1.class);
        sheet.setSheetName(sheet1Name);
        //下刊监测统计
        List<DownMonitorExcelSheet1> downMonitorExcelSheet1s = pushMonitorDao.queryDownMonitorExcelSheet1(schemeId, pushDate);
        writer.write(downMonitorExcelSheet1s, sheet);
        //已下刊 sheet2
  //      List<DownMonitorExcelSheet2> downMonitorExcelSheet2s = pushMonitorDao.queryDownMonitorExcelSheet2(schemeId, pushDate);
  //      Sheet sheet2 = new Sheet(2, 0, DownMonitorExcelSheet2.class);
  //      sheet2.setSheetName(sheet2Name);
  //      writer.write(downMonitorExcelSheet2s,sheet2);
        //未下刊 sheet3
  //      List<DownMonitorExcelSheet2> downMonitorExcelSheet3 = pushMonitorDao.queryDownMonitorExcelSheet3(schemeId, pushDate);
 //       Sheet sheet3 = new Sheet(3, 0, DownMonitorExcelSheet2.class);
  //      sheet3.setSheetName(sheet3Name);
  //      writer.write(downMonitorExcelSheet3,sheet3);
        writer.finish();
    }

原文地址:https://www.cnblogs.com/dw3306/p/10551330.html

时间: 2024-10-25 09:46:06

easyExcel导出excel的简单使用的相关文章

ASP.net中导出Excel的简单方法介绍

下面介绍一种ASP.net中导出Excel的简单方法 先上代码:前台代码如下(这是自己项目里面写的一点代码先贴出来吧) <div id="export" runat="server" style="width: 700px; margin-left: auto; margin-right: auto;"> <!--startprint--> <table width="100%" border=&

Qt导出Excel的简单实现

QAxObject对COM对象进行了封装,QAxObject派生自QAxBase,而后者提供了一组API通过IUnknown(不清楚IUnknown的同学可以去看看COM对象模型)指针直接访问COM对象,我们这里讲的excel也是一个COM对象,因此我们可以通过QAxObject来操作它,为了便于理解,我们首先了解一下excel的对象的主要层次结构: 上图是excel对象的层次结构,1个excel就有1个Application对象,1个Application对象由多个Workbook对象组成,这

larave导出excel数据简单的组装

$data = [['订单编号', '服务类目', '服务类型', '商品名称', '商品型号', '特殊要求', '客户姓名', '手机号码', '客户地址', '是否到货', '物流公司', '物流单号', '提货地址', '提货电话' , '代付运费', '下单人', '联系电话'],];$i = 0;foreach ($tasks as $key => $value) { $data[$i + 1] = [$value['task_sn'], $value['serve_type_nam

C#利用NPOI导出Excel类(简单版)

代码: using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; namespace ahwildlife.Utils { /// <summary> /// Excel工具类 /// 利用NPOI生成Excel /// </summary> public class ExcelUtil { #region 生成Excel /// <summary> /

java五行代码导出Excel

目录 先看代码 再看效果 EasyExcel 附: Java按模板导出Excel---基于Aspose实现 Java无模板导出Excel,Apache-POI插件实现 已经写过两种Excel导出插件了.今天再安利一个极简的导出Excel的框架,导出无特殊格式要求的Excel,只需五行代码: 先看代码 再看效果 EasyExcel 本案例用到的框架是阿里推出的EasyExcel,EasyExcel从第一次提交代码(2018年2月)到现在,在GitHub上已经获得6590个Star 以下是官方介绍

Java中导入导出Excel -- POI技术

一.介绍: 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际的开发中,很多时候需要实现导入.导出Excel的应用. 目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel 下面我就分别讲解一下如何使用这两个技术实现导入.导出Excel 二.使用Jakarta POI导入.导出Excel Jakarta PO

Java中导入、导出Excel

一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际的开发中,很多时候需要实现导入.导出Excel的应用. 目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel 下面我就分别讲解一下如何使用这两个技术实现导入.导出Excel 二.使用Jakarta POI导入.导出Excel Jakarta POI

silverlight RadGridView 复合表头 多表头 导出excel

ListHeaderShow.Clear(); ListHeaderShow.Add("区县"); ListHeaderShow.Add("企业名称"); ListHeaderShow.Add("监测点名称"); ListHeaderShow.Add("监测时间"); Util.Export<T_DATA_DATACOMMON> Exportxls = new Util.Export<T_DATA_DATAC

Ext.Net导出Excel

最近项目结束了,其中用到了Ext.Net的GridPanel导出Excel,简单的过程如下: 导出按钮的事件: 1 protected void btnExport_DirectClick(object sender, DirectEventArgs e) 2 { 3 if (Session["BorrowRecord"] != null) 4 { 5 DataTable tbBorrowRecord = (DataTable)Session["BorrowRecord&qu