草庐IT

EasyPoi快速入门(Excel导入导出工具)

Yu17aa 2024-03-30 原文

简介:
easypoi是一款Excel快速导入导出的工具,最近有所使用,结合了网上的一些用法和官方文档的介绍,在在这里总结一下最简单的esaypoi导入Excel的实现,网上很多教程都已经封装了工具类,虽然方便,但第一次接触easypoi可能看的不是清晰,现在总结一下最为直观的SpringBoot集成easypoi快速入门.

快速入门:
一.导入jar包

        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-spring-boot-starter</artifactId>
            <version>4.2.0</version>
        </dependency>

二.@Excel注解使用(导入示例类使用)

结合实体类的示例:

@Data
public class UserPo implements IExcelModel, IExcelDataModel {
    // name 属性对应Excel表中的这一列的名字,和Mysql数据里的列名差不多
    @Excel(name = "id")
    private Integer id;
    @Excel(name = "openid")
    private String openid;
    @Excel(name = "nickname")
    private String nickname;
    // replace这个属性,是指定替换的值,如果Excel表中是1,那么封装进来就是男,中间的分隔符是下划线
    @Excel(name = "sex" , replace = {"1_男" , "2_女" , "0_未知"})
    private String sex;
    @Excel(name = "city")
    private String city;
    @Excel(name = "country")
    private String country;
}

三.编写Servlet导入数据

在这里我们只要写一个接受文件上传的方法就好了,当然这个文件要是Excel的文件,我们读取数据的时候并不需要将文件读取并写到服务器的目录下,只是单纯的读取文件,然后使用easypoi的工具去读取就可以,注意这个工具只是将Excel表中的数据读入内存.

    @PostMapping("xlsUpdate")
    @ResponseBody
    public Result getUpdate(MultipartFile file) throws Exception {
        // 这里实例导入的对象
        ImportParams params = new ImportParams();
 
        // 下面两句的set很重要,如果设置不对会出现问题
        // HeadRows是指的你的列名的那一行,表头行数,默认1
        // 如果你的Excel表上来第一行就是 姓名 , 年龄 , 罩杯...
        // 那么这里指定HeadRows是第一行,为1
        params.setHeadRows(1);
 
        // 表格标题行数,默认0
        // 意思就是如果你的表上来就是   xx地区胸部大小统计表
        // 那这里就是你表的标题占的行数
        params.setTitleRows(0); 
        
        // 后面的这个方法是固定的
        // 返回读取列的数组                          这里的输入流直接MultipartFile的输入流
        List<UserPo> result = ExcelImportUtil.importExcel(file.getInputStream(),
            // 实体类的class  实例的导入对象
                UserPo.class, params);
 
        
        // 以上方法可以获得Excel表中的值,并且封装了实体类对象,下面有了实体类对象,那我们想干啥 
        // 就干啥了
        //*********************************************
        userService.insertUserList(result);
        Result r = new Result();
        r.setMsg("0000");
        return r;
    }

这里使用的接受上传文件的方法和MultipartFile类是SpringBoot提供好的

前台当然也要写一个文件上传的表单.这个就不演式了

四:编写Servlet导出数据

导出数据的时候是将你内存中的数据导入到一个Excel表中,正常是前台一个按钮,点击会下载Excel表

导出时的实体类也需要@Excel注解,并且可以使用一些属性定义要下载的表的行高列宽等属性,详情见上面的表格.并且也可以使用replace属性,指定替换某些值

    // 不知道为啥这段代码不高亮,很尴尬,大家凑合着看
    @GetMapping("downLoad")
    public void downLoad(HttpServletResponse resp) throws IOException {
        // 获取你的实体类list集合
        List<UserEx> list = userService.listUserEx();
 
        // 创建Workbook这个对象
        // 第一个参数是一个ExportParams对象,这里直接new,
        // ExportParams对象里面的第一个参数是你自己定义的表的名字
        // ExportParams对象里面的第二个参数是你自己定义Excel中Sheet的名字
        // 第二个参数是实体类的class  第三个是你封装的集合 
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("用户表", "用户详
       情") ,UserEx.class , list);
     
        // 设置下载的头信息 使用URLEncoder.encode是为了解决编码问题
        resp.setHeader("Content-Disposition" , "attachment;filename=" + 
                         URLEncoder.encode("用户表.xls" , "utf-8"));
        
        ServletOutputStream os = resp.getOutputStream();
        // 用workbook对象直接写出输出流就可以
        workbook.write(os);
    }

至此就简单的完成了easypoi的简单的导入导出,大家可以参考尝试一下,确实使用很简单

有关EasyPoi快速入门(Excel导入导出工具)的更多相关文章

  1. ruby - 检查是否通过 require 执行或导入了 Ruby 程序 - 2

    如何检查Ruby文件是否是通过“require”或“load”导入的,而不是简单地从命令行执行的?例如:foo.rb的内容:puts"Hello"bar.rb的内容require'foo'输出:$./foo.rbHello$./bar.rbHello基本上,我想调用bar.rb以不执行puts调用。 最佳答案 将foo.rb改为:if__FILE__==$0puts"Hello"end检查__FILE__-当前ruby​​文件的名称-与$0-正在运行的脚本的名称。 关于ruby-检查是否

  2. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  3. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  4. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  5. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  6. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  7. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  8. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  9. ruby-on-rails - 有没有一种工具可以在编码时自动保存对文件的增量更改? - 2

    我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功

  10. ruby - 如何以表格格式快速打印 Ruby 哈希值? - 2

    有没有办法快速将表格格式的ruby​​哈希打印到文件中?如:keyAkeyBkeyC...1232343451253474456...其中散列的值是不同大小的数组。还是使用双循环是唯一的方法?谢谢 最佳答案 试试我写的这个gem(在表中打印散列、ruby对象、ActiveRecord对象):http://github.com/arches/table_print 关于ruby-如何以表格格式快速打印Ruby哈希值?,我们在StackOverflow上找到一个类似的问题:

随机推荐