aeasyexcel 操作 Excel

Web项目利用EasyExcel实现Excel的导出操作 早期Java使用的一些解析,到处excel的框架存在种种问题被遗弃,现在使用阿里巴巴所提供的EasyExcel已成为一种主流,本篇将详细介绍该功能在Web项目中如何实际应用。 阅读详情

一、简述

easyexcel (阿里开源项目)是一款快速、简单避免OOM的 java 处理 Excel 工具。maven依赖如下:

<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.2.4</version>
</dependency>

二、实现已有Excel模板下载

模板配置路径如图:

下载代码分三步,主要分为加载资源->读取资源->写入响应流:

@RestController
@RequestMapping("/export")
public class ExportController {
    @GetMapping("/downloadTemplate")
    public void downloadTemplate(HttpServletResponse response) throws Exception {
        ClassPathResource classPathResource = new ClassPathResource("templates/easy.xls");
        InputStream inputStream = classPathResource.getInputStream();
        Workbook workbook = new HSSFWorkbook(inputStream);
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("content-Disposition", "attachment;filename=" +
                            URLEncoder.encode("easy.xls", "utf-8"));
        response.setHeader("Access-Control-Expose-Headers", "content-Disposition");
        OutputStream outputStream = response.getOutputStream();
        workbook.write(outputStream);
        outputStream.flush();
        outputStream.close();
    }
}

三、写入数据并生成文件

定义模型映射对象 UserExcelModel:

@Data
public class UserExcelModel extends BaseRowModel implements Serializable {
    @ExcelProperty(value = "用户名", index = 0)
    public String name;
    @ExcelProperty(value = "年龄", index = 1)
    public Integer age;
    @ExcelProperty(value = "手机号", index = 2)
    public String mobile;
    @ExcelProperty(value = "性别", index = 3)
    public String sex;
    public UserExcelModel(String name, Integer age, String mobile, String sex) {
        this.name = name;
        this.age = age;
        this.mobile = mobile;
        this.sex = sex;
    }
}

导出流程:定义列标题->创建sheet->自定义字体和风格->构造数据->写入数据->写入到浏览器响应流

@RestController
@RequestMapping("/export")
public class ExportController {
    @GetMapping("/exportData")
    public void exportData(HttpServletResponse response) throws Exception {
        XSSFWorkbook workbook = new XSSFWorkbook();
        String[] columnNames = {"用户名", "年龄", "手机号", "性别"};
        Sheet sheet = workbook.createSheet();
        Font titleFont = workbook.createFont();
        titleFont.setFontName("simsun");
        titleFont.setBold(true);
        titleFont.setColor(IndexedColors.BLACK.index);

        XSSFCellStyle titleStyle = workbook.createCellStyle();
        titleStyle.setAlignment(HorizontalAlignment.CENTER);
        titleStyle.setVerticalAlignment(VerticalAlignment.CENTER);
        titleStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        titleStyle.setFillForegroundColor(IndexedColors.YELLOW.index);
        titleStyle.setFont(titleFont);
       
        Row titleRow = sheet.createRow(0);
        for (int i = 0; i < columnNames.length; i++) {
            Cell cell = titleRow.createCell(i);
            cell.setCellValue(columnNames[i]);
            cell.setCellStyle(titleStyle);
        }
        //模拟数据
        List<UserExcelModel> dataList = new ArrayList<>();
        dataList.add(new UserExcelModel("张三", 12, "13811021203", "男"));
        dataList.add(new UserExcelModel("李四", 12, "13811021204", "男"));
        dataList.add(new UserExcelModel("王五", 12, "13811021205", "男"));
        dataList.add(new UserExcelModel("赵六", 12, "13811021206", "男"));

        //创建数据行并写入值
        for (int j = 0; j < dataList.size(); j++) {
            UserExcelModel userExcelModel = dataList.get(j);
            int lastRowNum = sheet.getLastRowNum();
            Row dataRow = sheet.createRow(lastRowNum + 1);
            dataRow.createCell(0).setCellValue(userExcelModel.getName());
            dataRow.createCell(1).setCellValue(userExcelModel.getAge());
            dataRow.createCell(2).setCellValue(userExcelModel.getMobile());
            dataRow.createCell(3).setCellValue(userExcelModel.getSex());
        }
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("content-Disposition", "attachment;filename=" + 
                            URLEncoder.encode("easyExport.xls", "utf-8"));
        response.setHeader("Access-Control-Expose-Headers", "content-Disposition");
        OutputStream outputStream = response.getOutputStream();
        workbook.write(outputStream);
        outputStream.flush();
        outputStream.close();
    }
}
Win10系统下Protel 99 SE元件库导入报错?3步搞定File is not recognized问题 本文详细介绍了在Win10系统下解决Protel 99 SE元件库导入报错'File is not recognized'的3步终极方案。通过手动修改配置文件、使用专用工具和优化系统兼容性设置,帮助用户快速解决这一经典PCB设计软件的兼容性问题,提升工作效率。 阅读详情

相关推荐

【NLP】文献翻译4——CH-SIMS:中文多模态情感分析数据集与细粒度的模态注释

CH-SIMS: A Chinese Multimodal Sentiment Analysis Dataset with Fine-grained Annotations of Modality摘要1. 介绍2. 相关工作2.1 多模态数据集2.2 多模态情感分析2.3 多任务学习3. CH-SIMS 数据集3.1 数据获取3.2 标注3.3 特征提取4. 多模式多任务学习框架4.1 单模态子网4.2 特征融合网络4.3 优化目标5. 实验5.1 基准5.2 实验的细节5.3 结果和讨论5.3.1 与

YoungSeng's Blog 1万+

使用Easyexcel对Excel进行读写操作

easyexcel完成读写操作 poi导出excel

BUG专业户 1万+

[TI板]MSPM0G3507——keil环境配置+烧录配置+vscode配置+空工程迁移+点灯+芯片解锁教程

本文介绍了MSPM0G3507开发环境的配置与烧录方法。主要内容包括:1)下载安装芯片支持包和SDK开发工具;2)通过串口或DAPLink两种方式实现程序烧录,详细说明了UniFlash软件的使用步骤和常见问题解决方法;3)简要提及工程迁移和LED点灯等基础操作。文章提供了完整的开发环境搭建指南,涵盖从软件安装到实际烧录的全过程,并附有相关工具下载链接和操作截图,帮助开发者快速上手MSPM0G3507开发。

qq_23220445的博客 1万+

EasyExcel操作Excel表格

EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。 他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。

qq_45110186的博客 1607

知识图谱本体建模之RDF、RDFS、OWL详解

(一)知识图谱本体建模之RDF、RDFS、OWL详解 1.语义网体系 知识图谱于2012年由Google提出,并不是新概念,而是由语义网络(Semantic Network)衍生而来。语义网络由相互连接的节点和边组成,节点表示概念或者对象,边表示他们之间的关系。RDF,RDFS与OWL都是基于语义网的知识表示框架,在节点和边的取值上做了约束,制定了统一标准,为多源数据的融合提供了便利。RDF,RDFS/OWL 属于语义网技术栈,它们的提出,使得语义网克服了语义网络的缺点。其语义网技术栈如下所示。 2.RD

周周的专栏 1万+

基于Arduino UNO的OLED显示器使用方法x2(Arduino系列五)

Arduino使用OLED显示模块可以实现串口数据显示,还可以与其他模块联合使用,实现实时显示开发板实时数据。

LNN0212的博客 4169

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

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

weixin_44610169的博客 883

通达信双紫擒龙指标实战指南:从源码解析到精准安装

本文详细解析了通达信双紫擒龙指标的核心逻辑、源码获取与安全验证、安装流程及实战应用技巧。通过紫紫红黄四种颜色信号捕捉趋势转折点,结合MACD、布林通道和成交量加权算法,提升交易准确性。文章还提供了个性化设置、信号解读及常见问题解决方案,帮助投资者高效运用该指标。

weixin_29248611的博客 1044

EasyExcel读取Excel数据(含多种方式)

简单地说,EasyExce是一个Java库,用于快速、简单地读写Excel文件以下是官网的简介:Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。

m0_59084856的博客 3万+

GEE必须会教程——一文教会你研究区域分块计算与合并

一整块算不是挺好的吗?emmmm,用过的人都知道,GEE好比幼年期的“紫妍”,要用“丹药”来养的,除非你是萧炎小友,到哪都有人给爆金币。我们今天想做的是计算2020年夏季西藏自治区的植被覆盖度(FVC),FVC的估算需要使用归一化植被指数(NDVI数据),这里我们用到的产品是MODIS的相关数据产品,该产品的分辨率是25 0m。下载好的结果毕竟是一块一块的,怎么对下载好的结果进行拼接,变成一张大图呢,别急,接下来,我们上科研小霸王——R语言。此处,我们通过省份数据,按照属性筛选,得到西藏自治区的行政边界。

Promising_GEO的博客 2510

实现电脑同时上内网和外网(或通过外网访问到该电脑通过该电脑访问内网)

一、需求描述 目前使用的公司网络只能够上内网,但是又有上外网查资料的需求: ①想要实现电脑既能上内网的同时也可以上外网; ②想要使用其他外网电脑使用外网连接到该电脑,通过该电脑访问内部的网络内容。 二、准备内容 电脑必须具备两个网卡,即:可以同时连接内网和外网(比如我的笔记本就可以:使用网线连接笔记本网口与内网通讯,使用WIFI连接手机热点访问外部网络); 注意:如果只有一个网口,可以另外购买USB的无线网卡来实现上网卡。 三、实现电脑同时上内网和外网的操作步骤 3.1、网络拓扑图 ..

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 2万+

使用EasyExcel实现Excel表格的导入导出

Java解析、生成Excel比较有名的框架有Apachepoi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,一个3M的excel用POIsax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;

qq_45004609的博客 5747

图像紫边消除(depurple)

对图像紫边形成原因、消除方法进行了介绍。

沧海一升的博客 7564

spring boot-操作excel(EasyExcel 快速开始)/ spring boot接受文件参数 File

java本身并不支持读取excel,所有读取excel需要借助一些框架。

西京刀客 3524

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

详细讲解Java使用EasyExcel函数来操作Excel表(附实战)

详细讲解Java使用HSSFWorkbook函数导出Excel表(附实战),现在发觉还有个EasyExcel也可专门用来读写Excel表。

码农研究僧的博客 5264

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

EasyExcel 读写 Excel

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

qq_42923937的博客 740

JAVA使用easyexcel操作Excel

之前写过一篇《JAVA操作Excel》,介绍了jxl和poi读写Excel的实现,今天为大家介绍一下使用easyexcel对Excel进行读写,项目主页地址:https://github.com/alibaba/easyexcel 作者对easyexcel的介绍是: Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有...

优快云_KONGlX的博客 1807

使用 EasyExcel 实现高效的 Excel 读写操作

EasyExcel 是一个功能强大且高效的 Excel 操作工具。它通过简化代码结构、优化性能和丰富的功能支持,成为 Java 开发者处理 Excel 文件的首选库。通过本篇博客的讲解,相信你已经掌握了 EasyExcel 的基本用法和高级功能,能够在实际项目中高效处理 Excel 文件。

小DuDu的博客 1912

EasyExcel 操作excel导入导出

easyexcel操作文件导入导出,导入进行数据校验

m0_51315555的博客 4237

excel系列(三) - 利用 easyexcel 快速实现 excel 文件导入导出

本篇我们继续深入介绍另一款更优秀的 excel 工具库:easyexcel 。

程序员志哥的博客 3105

EasyExcel使用总结

easyexcel 使用详解

北执南念的博客 4029

使用EasyExcel读取和导出Excel文件

读取Excel文件:使用方法读取文件,并通过处理每一行的数据。导出Excel文件:使用方法将数据写入到响应的输出流中,并设置正确的响应头。希望这篇教学文章对你有所帮助。如果有任何问题或需要进一步的帮助,欢迎随时评论交流。

weiwen1408的博客 7786

用EasyExcel对excel表格进行读写操作

用EasyExcel对excel表格进行读写操作

weixin_45105773的博客 1140

EasyExcel导入Excel和导出Excel教程

EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 它底层是基于POI做的封装和优化,避免了POI耗费内存,内存溢出的问题。笔者之前做导出、导入Excel也是使用POI,后来在生产上总是出现内存溢出的问题,在寻求解决方案的路途中,就找到了EasyExcel。 1.集成ExasyExcel <dependency> <groupId>com.alibaba</groupI

李秀才的博客 4380

EasyExcel 与 Apache POI:Java 操作 Excel 的详解

EasyExcel 是阿里巴巴开源的一个基于 Java 的 Excel 操作库。它在传统的 Excel 操作库(如 Apache POI)基础上进行了封装和优化,提供了更简洁的 API 和更高的性能,尤其是在处理大数据量的 Excel 文件时表现出色。Apache POI 是一个开源的 Java 库,用于操作各种 Microsoft Office 格式的文件,包括 Excel、Word、PowerPoint 等。它提供了低级 API 和高层 API,可以进行文件的读取、写入、创建、修改等操作。

技术驱动,分享互联网软件的那些事儿。关注我,获取有深度、有温度的技术内容,开启你的技术之旅。 1585

EasyExcel 读写Excel, 多sheet操作

摘要:EasyExcel是一款Java操作Excel的开源库,提供简便的读写功能。通过Maven引入依赖后,可快速实现Excel操作:1)写入时定义数据模型类并设置样式,支持多Sheet操作;2)读取时注册监听器处理数据,自动完成解析。该库简化了POI的复杂操作,支持自定义样式,适合大规模数据导入导出场景。

从对比中寻找伤害 495

SpringBoot整合Easyexcel操作Excel,闲暇之余,让我们学习更多

easyexcel 3.0.2 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter org.projectlombok lombok com.alibaba fastjson 1.2.74 org.springframework.boot spring-boot-starter-test junit junit 4.12 1.2、项目结构 搭建个项

m0_64867839的博客 2489
上一篇: Java 比较两个任意文件是否相同
下一篇: Excel 文件的生成与下载
JFS_Study
博客等级 码龄6年 363粉丝 359原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JFS_Study

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值