首页 > 其他分享 >EasyExcel实现文件上传下载(百万级数据、单元格自定义样式)

EasyExcel实现文件上传下载(百万级数据、单元格自定义样式)

时间:2024-03-19 09:00:44浏览次数:31  
标签:String 自定义 EasyExcel 单元格 private class value new public

文章目录

一、EasyExcel介绍

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

官方网站:https://easyexcel.opensource.alibaba.com/docs/current

maven依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.1.0</version>
</dependency>

特别说明:Excel不同版本最多的行和列

  • Excel2003(xls) 最多65536(六万多)行,256 列,超过就会报错
  • Excel2007(xlsx) 最多1048576(一百万多)行,16384列(采取的是xml存储),超过就会报错

二、写Excel

1、最简单的写

实体类

@Data
public class Employee {
    @ExcelProperty(value = "用户编号")
    private Integer id;

    @ExcelProperty(value = "姓名")
    private String name;

    @ExcelProperty(value = "性别")
    private String gender;

    @ExcelProperty(value = "工资")
    private Double salary;

    @ExcelProperty(value = "入职时间")
    private Date hireDate;
}

通用数据生成 后面不会重复写

private List<Employee> employeeData() {
    List<Employee> employeeList = new ArrayList<>();
    for (int i = 1; i <= 10; i++) {
        Employee employee = new Employee();
        employee.setId(i);
        employee.setName("emp" + i);
        employee.setGender(i % 2 == 0 ? "男" : "女");
        employee.setSalary(i * 1000.00);
        employee.setHireDate(new Date());
        employeeList.add(employee);
    }
    return employeeList;
}

最简单的写代码

@Test
public void simpleWrite() {
    String fileName = "/Users/xuchang/Documents/simpleWrite.xlsx";
    EasyExcel.write(fileName, Employee.class)
            .sheet("Sheet名称")
            .doWrite(employeeData());
}

标签:String,自定义,EasyExcel,单元格,private,class,value,new,public
From: https://blog.csdn.net/qq_35512802/article/details/136635443

相关文章

  • 微信小程序自定义组件
    微信小程序中的自定义组件是指在微信小程序中创建的可重用的、可复用的组件,它可以被多个页面使用。自定义组件可以帮助我们提高开发效率,提高代码的可维护性和可重用性。以下是微信小程序中自定义组件的使用方法:一.创建自定义组件首先,我们需要在微信小程序中创建一个自定......
  • 前端学习-vue视频学习008-TS中的接口\泛型\自定义类型
    尚硅谷视频链接使用ts定义,可限制参数的类型新建ts文件//定义接口限制对象属性exportinterfacepersonInter{name:string,age:number,gender:string}//使用泛型//exporttypepersonArr=Array<personInter>//另一种写法exporttypepersonArr=p......
  • 为 PyTorch 层指定自定义名称
    参考这个问答,有两种方法。第一种,在定义nn.Sequential时传入OrderedDict类型变量。importcollectionsimporttorchmodel=torch.nn.Sequential(collections.OrderedDict([("conv1",torch.nn.Conv2d(1,20,5)),("relu1",tor......
  • JavaScript学习笔记7: 对象 - 自定义对象&JSON
    JS对象-自定义对象&JSON自定义对象类似java的类Json的所有属性(key)需要用双引号包围,本质是字符串<script>    varuser={    name:"tom",    age:10,    gender:"male",    //eat:function(){}    //可以简写为    eat(){//自......
  • Eclipse设定自定义格式化(解决java格式化注释中参数挤在一行的问题)
    1.问题在java默认的格式化中,对于注释这一块的格式化,当有多个参数Param,都是挤在一起的,导致十分不美观,我们这时就需要自定义java格式化2.解决2.1找到Java>CodeStyle>Formatter2.2由于Eclipse默认的格式化文件不可以修改,这里我们基于其选择新建一个自定义格式化文件2......
  • Vue+OpenLayers7入门到实战:OpenLayers7创建自定义鹰眼控件,自定义鹰眼控件样式,调整鹰眼
    返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7入门到实战前言本章介绍如何使用OpenLayers7在地图上创建自定义鹰眼控件,自定义鹰眼控件样式,调整鹰眼控件位置、大小、文字和按钮等样式。二、依赖和使用"ol":"7.5.2"使用npm安装依赖npminstallol@7.5.2使用Y......
  • OpenLayers6实战,OpenLayers创建自定义鹰眼控件,自定义鹰眼控件样式,调整鹰眼控件位置、
    专栏目录:OpenLayers实战进阶专栏目录前言本章讲解OpenLayers6如何创建自定义鹰眼控件,自定义鹰眼控件样式,调整鹰眼控件位置、大小和文字和按钮等自定义样式的功能。二、依赖和使用"ol":"^6.15.1"使用npm安装依赖npminstallol@6.15.1使用Yarn安装依赖yarn......
  • 自定义edge地址搜索栏
    在bing上搜索计算机相关内容,前两页csdn能占十之七八九,内容能参考的十之一二,毕竟还能看,这回csdn呱噪地把顶部广告栏直接加到页面的三有其一,翻看内容很不适,意思就是不登录就别看了,没辙,还是得屏蔽。因之前就屏蔽过一次,重装系统后没加上,这回照着旧路子再走一遍,edge点设置->隐私,搜索和......
  • 分享一个之前开发的react键盘事件的快捷键实现,组合键,支持防抖和节流,通过自定义hooks实
    npm包地址:linkgithub地址:linkreact-khooksGettingStarted......
  • C语言自定义类型:枚举(C语言进阶)
    目录前言1、枚举类型定义2、枚举的优点3、枚举的使用结语前言    本篇文章讲解C语言自定义类型:枚举类型。    枚举顾名思义就是一一列举,把可能的值一一列举。像一周的周一到周日可以枚举;每年12个月,可以枚举。1、枚举类型定义enumDay//星期{ Mo......