使用EasyPoi轻松导入导出Excel文档的方法示例

提到Excel的导入导出,大家肯定都知道alibaba开源的EasyExcel,该项目的github地址为:https://github.com/alibaba/easyexcel

这个项目非常活跃,项目诞生的目的就是为了简化开发、降低内存消耗。我项目中也用过,但还是有一些槽点的,比如文档很简陋,功能做的不完善,不支持图片的读取等。所以,今天给大家推荐另外一款Excel处理的工具:EasyPoi。

一、EasyPoi简介

官网:http://www.afterturn.cn/

文档:http://easypoi.mydoc.io/

EasyPoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 ,不如poi那么自定义,不如jxl那么多标签,但是我们就是写的少,写的少。

EasyPoi的主要特点

  1. 设计精巧,使用简单
  2. 接口丰富,扩展简单
  3. 默认值多,write less do more
  4. spring mvc支持,web导出可以简单明了

二、EasyPoi的功能介绍

Excel自适应xls和xlsx两种格式,word只支持docx模式,功能还是挺丰富的。

1.Excel导入

  • 注解导入
  • Map导入
  • 大数据量导入sax模式
  • 导入文件保存
  • 文件校验
  • 字段校验

2.Excel导出

  • 注解导出
  • 模板导出
  • html导出

3.Excel转html

4.word导出

5.pdf导出

三、重点功能介绍

1.注解

EasyPoi起因就是Excel的导入导出,最初的模板是实体和Excel的对应,model--row,filed--col 这样利用注解我们可以和容易做到excel到导入导出 经过一段时间发展,现在注解有5个类分别是

  • @Excel 作用到filed上面,是对Excel一列的一个描述
  • @ExcelCollection 表示一个集合,主要针对一对多的导出,比如一个老师对应多个科目,科目就可以用集合表示
  • @ExcelEntity 表示一个继续深入导出的实体,但他没有太多的实际意义,只是告诉系统这个对象里面同样有导出的字段
  • @ExcelIgnore 和名字一样表示这个字段被忽略跳过这个导导出
  • @ExcelTarget 这个是作用于最外层的对象,描述这个对象的id,以便支持一个对象可以针对不同导出做出不同处理

2.Excel 模板

模板是处理复杂Excel的简单方法,复杂的Excel样式,可以用Excel直接编辑,完美的避开了代码编写样式的雷区,同时指令的支持,也提了模板的有效性。就像下面这样使用,具体用法请看文档。

3.Excel<->Html的互转

4.Word模板导出

5.图片的导入导出

@Test//图片导入
public void test() {
        try {
            ImportParams params = new ImportParams();
            params.setNeedSave(true);
            List<CompanyHasImgModel> result = ExcelImportUtil.importExcel(
                    new File(PoiPublicUtil.getWebRootPath("import/imgexcel.xls")),
                    CompanyHasImgModel.class, params);
            for (int i = 0; i < result.size(); i++) {
                System.out.println(ReflectionToStringBuilder.toString(result.get(i)));
           }
            Assert.assertTrue(result.size() == 4);
       } catch (Exception e) {
            e.printStackTrace();
       }
   }
}
 //导出
 @Excel(name = "公司LOGO", type = 2 ,width = 40 , height = 20,imageType = 1)
    private String companyLogo;

6.Excel大数据导出

大数据导出是当我们的导出数量在几万,到上百万的数据时,一次从数据库查询这么多数据加载到内存然后写入会对我们的内存和CPU都产生压力,这个时候需要我们像分页一样处理导出分段写入Excel缓解Excel的压力 EasyPoi提供的是两个方法 强制使用 xssf版本的Excel 。具体代码看文档,我们看下资源占用即可:

多次测试用时统计,速度还是可以接受的。

数据量 用时 文件大小 列数
100W 16.4s 24.3MB 5
100W 15.9s 24.3MB 5
200W 29.5s 48.5MB 5
100W 30.8s 37.8MB 10
200W 58.7s 76.1MB 10

7.大数据导出View的用法

Easypoi view 项目是为了更简单的方便搭建在导出时候的操作,利用spring mvc 的view 封装,更加符合spring mvc的风格。EasypoiBigExcelExportView 是针对大数据量导出特定的View,在跳转到这个View的时候不需要查询数据,而且这个View自己去查询数据,用户只要实现IExcelExportServer接口就可以了 。

总结,Easypoi的功能强大,文档和示例代码丰富,大家在开发中如果有类似的需求,不妨一试。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 使用EasyPoi轻松导入导出Excel文档的方法示例

    提到Excel的导入导出,大家肯定都知道alibaba开源的EasyExcel,该项目的github地址为:https://github.com/alibaba/easyexcel. 这个项目非常活跃,项目诞生的目的就是为了简化开发.降低内存消耗.我项目中也用过,但还是有一些槽点的,比如文档很简陋,功能做的不完善,不支持图片的读取等.所以,今天给大家推荐另外一款Excel处理的工具:EasyPoi. 一.EasyPoi简介 官网:http://www.afterturn.cn/ 文档:http:

  • js导出table数据到excel即导出为EXCEL文档的方法

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

  • java EasyExcel面向Excel文档读写逻辑示例详解

    目录 正文 1 快速上手 1.1 引入依赖 1.2 导入与导出 2 实现原理 2.1 @RequestExcel 与 @ResponseExcel 解析器 2.2 RequestMappingHandlerAdapter 后置处理器 3 总结 正文 EasyExcel是一款由阿里开源的 Excel 处理工具.相较于原生的Apache POI,它可以更优雅.快速地完成 Excel 的读写功能,同时更加地节约内存. 即使 EasyExcel 已经很优雅了,但面向 Excel 文档的读写逻辑几乎千篇一

  • nodejs(officegen)+vue(axios)在客户端导出word文档的方法

    前言 我的项目中有一个需求:点击按钮生成可编辑的word文档订单详情的信息 我使用的前端框架是Vue.js.后台使用的是node.js node.js生成和导出word文档我参考的是下面这两篇文章,写的挺好的(github上的那篇里面还有node.js生成word.excel.ppt的example,需要详细的可以看里面) https://www.jb51.net/article/144769.htm https://github.com/Ziv-Barber... 问题 node.js上面这两

  • C# winform打开Excel文档的方法总结(必看篇)

    C#打开Excel文档方法一:调用Excel的COM组件 在项目中打开Add Reference对话框,选择COM栏,之后在COM列表中找到"Microsoft Excel 11.0 Object Library"(Office 2003),然后将其加入到项目的References中即可.Visual C#.NET会自动产生相应的.NET组件文件,以后即可正常使用. 按钮的点击事件如下: privatevoid button1_Click(object sender, EventArg

  • Golang生成Excel文档的方法步骤

    基于数据生成 Excel 文档是一个很常见的需求,本文将介绍如何使用 Go 的 Excelize库去生成 Excel 文档,以及一些具体场景下的代码实现. 关于 Excelize 库 Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档.支持 XLSX / XLSM / XLTM / XLTX 等多种文档

  • libreoffice python 操作word及excel文档的方法

    1.开始.关闭libreoffice服务: 开始之前同步字体文件时间,是因为创建soffice服务时,服务会检查所需加载的文件的时间,如果其认为时间不符,则其可能会重新加载,耗时较长,因此需事先统一时间. 使用时如果需要多次调用,最后每次调用均开启后关闭,否则libreoffice会创建一个缓存文档并越用越大,处理时间会增加. class OfficeProcess(object): def __init__(self): self.p = 0 subprocess.Popen('find /u

  • Python简单读写Xls格式文档的方法示例

    本文实例讲述了Python简单读写Xls格式文档的方法.分享给大家供大家参考,具体如下: 1. 模块安装 使用pip install命令安装, 即: pip install xlrd pip install xlwt 如下图: 2. python 代码 import xlrd import xlwt import datetime def set_style(name,height,format,bold=False): style = xlwt.XFStyle() if format.stri

  • PHP使用DOM和simplexml读取xml文档的方法示例

    本文实例讲述了PHP使用DOM和simplexml读取xml文档的方法.分享给大家供大家参考,具体如下: 实例  用DOM获取下列xml文档中所有金庸小说的书名,该xml文档所在位置为 ./books.xml: <?xml version="1.0" encoding="utf-8"?> <root> <book> <title>天龙八部</title> <author>金庸</autho

  • C#编程简单实现生成PDF文档的方法示例

    本文实例讲述了C#编程简单实现生成PDF文档的方法.分享给大家供大家参考,具体如下: using System; using System.IO; using System.Text; using System.Collections; namespace PDFGenerator { public class PDFGenerator { static float pageWidth = 594.0f; static float pageDepth = 828.0f; static float

随机推荐