使用EasyExcel简单操作Excel

easy poi实现不定列导出excel (map方式) 规定某些列是数字格式【附带ExcelExportEntity,ExcelBaseEntity属性说明】 由于业务需求,有时会需要进行行转列之后导出,而因为大多数的行转列后的数据列数是不固定的,所以此时传统的使用实体类加注解的方式就无法解决该问题了。在这个类中有type属性,这个属性就是设置列的类型的。这个属性由一个枚举类提供:BaseEntityTypeConstants。这个类可以提供对列的各种操作,一些基础的属性需要去看:ExcelBaseEntity这个基类。代码中使用的:ExcelExportEntity 是easyPoi提供的一个类。 阅读详情

导出

生成依赖

父工程中导入依赖

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

设置实体类标签

  • @ExcelProperty : 配置属性和生成Excel中列的关系(并设置表头为自定义的内容)
  • @ContentRowHeight(参数) : 配置数据行的行高
  • @HeadRowHeight(参数): 配置表头行的行高
  • @ColumnWidth(参数) :配置列宽
@Data
@ContentRowHeight(20)
@HeadRowHeight(20)
@ColumnWidth(15)
public class ContractProductVo implements Serializable {

	@ExcelProperty("客户名称")
	private String customName;		//客户名称
	@ExcelProperty("合同号")
	private String contractNo;		//合同号,订单号
	@ExcelProperty("货号")
	private String productNo;		//货号
	@ExcelProperty("数量")
	private Integer cnumber;		//数量
}

不依赖模板的简单导出

 @RequestMapping("/printEasyExcel")
    public void printEasyExcel(String  inputDate) throws Exception {
        List<ContractProductVo> contractProductVoList = contractService.findContractProductVoListByShipTime(inputDate, getCompanyId());
        String returnName = "出货表.xlsx";
        returnName = response.encodeURL(new String(returnName.getBytes(),"iso8859-1"));
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setCharacterEncoding("utf-8");
        response.setHeader("Content-disposition","attachment;filename="+returnName);

        EasyExcel.write(response.getOutputStream()).head(ContractProductVo.class).sheet("出货表").doWrite(contractProductVoList);
    }

使用已有模板导出

 @RequestMapping("/printEasyExcelTemplate")
    public void printEasyExcelTemplate(String  inputDate) throws Exception {
        List<ContractProductVo> contractProductVoList = contractService.findContractProductVoListByShipTime(inputDate, getCompanyId());

        Map map = new HashMap();
        map.put("time",inputDate.replaceAll("-0","年").replaceAll("-","年")+"月份出货表");

        String realPath = session.getServletContext().getRealPath("make/xlsprint/tOUTPRODUCT2.xlsx");
        String resultName = "出货表.xlsx";
        resultName = response.encodeURL(new String(resultName.getBytes(),"iso8859-1"));
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setCharacterEncoding("utf-8");
        response.setHeader("Content-Disposition","attachment;filename="+resultName);

        ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).head(ContractProductVo.class).withTemplate(realPath).build();
        WriteSheet writeSheet = EasyExcel.writerSheet().build();
        excelWriter.fill(map,writeSheet);
        excelWriter.fill(contractProductVoList,writeSheet);
        excelWriter.finish();
    }

EasyExcel支持两种模板占位符的写法

{属性名} :针对单一对象的数据详情(传入参数为对象或者map)
属性名 = 对象的属性/map中的key
{.属性名} :针对数组中循环迭代,配置数组中对象元素的属性名称

导入

设置实体类

@ExcelIgnoreUnannotated
public class ContractProduct extends BaseEntity implements Serializable {
	@ExcelProperty("货号")
	private String productNo;		//货号

	@ExcelProperty("货物描述")
	private String productDesc;		//货描

	@ExcelProperty("装率")
	private String loadingRate;		//报运:装率    1/3

	@ExcelProperty("箱数")
	private Integer boxNum;			//报运:箱数    100

	@ExcelProperty("包装单位")
	private String packingUnit;		//包装单位:PCS/SETS   支/箱

	@ExcelProperty("数量")
	private Integer cnumber;		//数量                            300

	@ExcelProperty("要求")
	private String productRequest;	//要求

	@ExcelProperty("单价")
	private Double price;			//单价

	@ExcelProperty("生产厂家")
	private String factoryName;		//厂家名称,冗余字段
	//省略未加注解属性和setget方法
	}
  • 通过@ExcelProperty注解的形式指定解析Excel中列的位置
  • @ExcelIgnoreUnannotated: 默认不加ExcelProperty 的注解的属性都会参与读写,在类上配置此注解剩余属性不会参与读写。

实现导入

@RequestMapping("/import")
    public String importFile(String contractId, MultipartFile file) throws Exception{
        List<ContractProduct> contractProductList = EasyExcel.read(file.getInputStream()).head(ContractProduct.class).sheet(0).doReadSync();
        for (ContractProduct contractProduct : contractProductList) {
            contractProduct.setId(UUID.randomUUID().toString());
            contractProduct.setContractId(getCompanyId());
            contractProduct.setCompanyName(getCompanyName());
            contractProduct.setContractId(contractId);
            contractProduct.setCreateTime(new Date());
        }
        contractProductService.saveList(contractProductList);
        return "redirect:/cargo/contractProduct/list.do?contractId="+contractId;
    }
Java解析excel,对excel文件的读取操作(阿里推出的easyExcel,亲测好用简单) 准备工作: springboot项目 maven 1.导入依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>1.1.1</version> </depen... 阅读详情

相关推荐

BaseExcel库

支持xls格式Excel文件的读取和编辑保存的C++库。例子可查看https://blog.youkuaiyun.com/gongxie0235/article/details/109092954

1.EasyExcel读写Excel的介绍

EasyExcel读写Excel的介绍一、Excel导入导出的应用场景二、EasyExcel简介 一、Excel导入导出的应用场景 1、数据导入:减轻录入工作量 2、数据导出:统计信息归档 3、数据传输:异构系统之间数据传输 二、EasyExcel简介 1、EasyExcel特点 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。 Eas

weixin_46080928的博客 1562

list嵌套list例子

list嵌套list,可以直接运行,其实就是事件拦截

快看过来,这么详细的easyexcel导出excel表格

easyexcel导出excel表格

qq_57732418的博客 6755

跟着团子学SAP CO:结果分析各评估方法计算逻辑概览 RA Valuation Method Overview KKA1/KKA2/KKA3

在大部分企业财务月结时,结果分析是必不可少的一环,通过结果分析系统可按照设定的评估方法及相关配置自动计算在制品(WIP)、主营业务成本、主营业务收入等等。 在结果分析中最重要的是根据业务需求选择合适的评估方法,目前SAP共提供15种评估方法,今天针对每一种方法计算逻辑及常用的业务场景进行介绍: (1)基于收入的评估方式(带利润实现) Revenue-Based Method with Profit Realization 第一种方式的计算是基于实际收入与计划收入的占比推算应结转的主营业务成本,如果当期累计的

Lucas1211的博客 1万+

ANSYS Help USER300

USER 300概述单元描述输入数据假设与限制条件 概述 单元描述 Mechanical APDL提供了一种方便的方法来创建自定义的单元,命名为USER300,可以创建几乎任何单元类型。 UserElem子程序为Mechanical APDL在单元类型创建上提供了一个接口,可传递用户自定义单元创建时所需的所有数据,然后从自定义单元返回所有数据和结果,以更新数据库和文件。因为通过接口可以访问数据库和文件信息,所以很少需要了解Mechanical APDL数据库程序和文件结构。该接口还提供了获取Mechanic

weixin_47019765的博客 2235

【问题解决】EasyExcel导出excel打开报错:部分内容损坏

文件名等信息通过设置HttpServletResponse response来实现。后台接口做了返回值,如errorCode等,只要有返回体,就会有问题。设置后台导出接口的返回为void即可解决。

sinat_35458330的博客 2740

基于陀螺仪航向反馈的轮式机器人PID直线控制

航向角控制是移动机器人实现稳定直线运动的基础技术,其本质是通过实时感知机体朝向偏差并动态调节驱动输出,以抵消机械不对称、轮径误差等固有扰动。该方法依托陀螺仪测量角速度并积分解算航向角,结合离散化PID算法生成补偿性PWM指令,在嵌入式平台(如STM32)上构建低延迟闭环。相比依赖编码器的速度闭环,它规避了轮径标定与安装偏心等误差源,显著提升低成本平台的工程鲁棒性与部署效率。典型应用场景包括教育机器人直线循迹、AGV基础导航模块开发及IMU-PID融合控制原型验证。

web39explorer的博客 1110

POI excel文件中的部分内容有问题。已修复的记录: /xl/styles.xml 部分的 格式 (样式)

POIexcel文件中的部分内容有问题。已修复的记录: /xl/styles.xml 部分的 格式 (样式)

siyu9412的博客 2691

PCIe 6.0实战指南:从链路训练到信号完整性的避坑手册

本文是一份针对PCIe 6.0硬件工程师的实战避坑指南。文章深入解析了从NRZ到PAM4调制带来的信号完整性挑战,详细拆解了链路训练(LTSSM)的复杂过程与调试方法,并提供了从信道仿真到实验室实测(如使用Keysight示波器进行眼图与误码率分析)的完整信号完整性闭环验证策略,帮助工程师解决高速率下的链路不稳定与降速问题。

weixin_29306875的博客 343

Proteus课设原理图及报告

1. I/O 口:32 个可编程 I/O 引脚,分成 4 个并行 I/O 端口 (P0, P1, P2, P3),P0 功能段选 a、b、c、d、e、f、g、dp 使其中部分点亮,P2 功能为位选 1、2、4.按键操作分析:P3.0-设置时钟的时间,P3.1-确定更改的时钟时间,P3.2-对。时钟设置标志 0 不设置,1 设置时,2 设置分,3 设置秒。P3.0 按下的次数对应 不设置,设置时,设置分,

2303_76688805的博客 1184

使用EasyExcel实现excel的简单读写操作

测试类定义一个返回list的方法进行表格中内容的填写,因为EasyExcel.write().doWrite()方法的参数需要list集合。在测试类中我们使用EasyExcel中的read方法进行实现。右键运行,就会在定义的位置生成一个xlsx的表格文件了。进行读操作需要我们定义一个监听类。

weixin_44610169的博客 883

IEEE Transactions on Industrial Informatics(TII)投稿全流程解析:从准备到成功提交

本文详细解析了向IEEE Transactions on Industrial Informatics(TII)投稿的全流程,涵盖从投稿前的格式准备、内容结构优化到在线提交系统实操等关键环节。重点强调了遵守TII严格的格式规范、双盲评审要求以及如何构建有说服力的学术叙述,旨在帮助研究者提升稿件质量,顺利通过评审。

weixin_28396629的博客 1866

Java 实现EasyExcel对Excel的简单写操作和读操作

EasyExcel主要特点之一:采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理。 一,写操作 1,导入pom依赖 <!-- EasyExcel --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> .

我爱吃红薯的博客 2457

QGC二次开发实战指南(一):从零构建自定义地面站界面

本文详细介绍了QGC二次开发实战指南,从零开始构建自定义地面站界面。通过QT和QML技术结合MAVLINK协议,开发者可以打造适合特定业务场景的无人机监控系统,提升操作效率与用户体验。文章包含环境搭建、界面设计、数据绑定等完整开发流程,是QGC二次开发的实用教程。

weixin_28693683的博客 496

Winform从入门到精通(21)——ProgressBar(史上最全)

本介绍ProgressBar控件的详细用法,包含所有属性、事件,绝对史上最全!

qq_34059233的博客 3350

Java使用easyExcel操作Excel就是这么简单!

之前我们都是使用jxl或者poi操作Excel表格,我们本次使用阿里开源的easyExcel对Excel实现上传和下载功能。

qq_43813937的博客 2891

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

EasyExcel简单读写Excel操作

EasyExcel简单读取写入Excel文件 ​ EasyExcel 是来自alibaba的一个优秀的读写Excel工具。相比同一作用的POI,EasyExcel的性能以及稳定性更加优秀,并且EasyExcel正常情况下不会出现内存溢出的情况。 github: https://github.com/alibaba/easyexcel 官网: https://www.yuque.com/easyexcel/doc/easyexcel MyGithub Demo: (欢迎点star) https://githu

whitehats的博客 1401

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

EasyExcel java实现excel简单读写操作(快速上手,复制粘贴即可)

EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。 https://github.com/alibaba/easyexcel 一、导入maven坐标 Lombok可选,不导入的话需要手动写getter、setter、tostring <!-- easyexcel--> <dependency> <groupId>com.alibaba</groupId> &l.

一起码代码 8146

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java简单使用EasyExcel操作读写excel

Java简单使用EasyExcel操作读写excel

见证自己学习,成长的记录 3696

POI和 EasyExcel对Excel的简单操作

POI Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 结构 HSSF - 提供读写Microsoft Excel格式档案的功能。 XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。 HWPF - 提供读写Microsoft Word格式档案的功能。 HSLF - 提供读写Microsoft PowerPoint格式档案的功能。 HDGF - 提供读写Microsoft Vis

weixin_45890113的博客 833

EasyExcel:让Excel操作变得简单优雅

EasyExcel是阿里巴巴开源的一个基于Java的Excel处理工具,它重写了POI对Excel的解析,能够原本一个3M的Excel用POI sax解析依然需要100M左右内存,改用EasyExcel可以降低到几M,并且再大的Excel也不会出现内存溢出的情况。// 自定义样式写入.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 自适应列宽。

weixin_73735141的博客 1151

阿里EasyExcel开源超简单入门操作Excel

前段时间项目上需要导入一个3000多条数据的Excel耗时十几分钟,使用的是传统的Apache poi的,最后统一决定用阿里的开源easy excel。 阿里在18年3月份左右发布easyexcel,刚发布就是打着“低内存”解决POI的oom的口号,本人在测试过程中发现相比poi,确实在使用的体验、操作简便性上有不少提升,感谢阿里团队的努力,官方给出的项目demp的github地址:https://github.com/alibaba/easyexcel

liangshitian的博客 1万+

【Java】导出excel表格用EasyExcel,简单方便一步操作!

一、需求简介 做各种后台时,总会遇到表格导出为excel的功能,那么对于我这样的Java小白,当然是喜欢操作简单、性能还好的方法啦! 我们项目使用的是阿里的EasyExcel,下面我就来介绍一下,快速上手使用EasyExcel包~ 二、官方链接 JAVA解析Excel工具EasyExcel: https://github.com/alibaba/easyexcel 三、快速上手使用 (一)引入依赖...

May女子の博客 2014
上一篇: Excel百万级别数据POI简单导出
施先生不轻
博客等级 码龄6年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值