ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

easypoi

2021-05-28 19:03:23  阅读:1629  来源: 互联网

标签:String 导出 excel Excel 导入 easypoi


easypoi

网址:EasyPoi教程_V1.0 (mydoc.io)

easypoi是为了方便我们编写excel和word的模板导入和导出,是对poi的封装的一个工具类

(将Java中的对象作为excel表中一行一行记录导出)

​ easypoi 父包--作用大家都懂得

​ easypoi-annotation 基础注解包,作用与实体对象上,拆分后方便maven多工程的依赖管理

​ easypoi-base 导入导出的工具包,可以完成Excel导出,导入,Word的导出,Excel的导出功能

​ easypoi-web 耦合了spring-mvc 基于AbstractView,极大的简化spring-mvc下的导出功能

​ sax 导入使用xercesImpl这个包(这个包可能造成奇怪的问题哈),word导出使用poi-scratchpad,都作为可选包了

导出

1.导入pom依赖

 <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
        </dependency>

        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>4.3.0</version>
        </dependency>

        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>4.3.0</version>
        </dependency>

        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>4.3.0</version>
        </dependency>
        
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>

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

@Excel 作用到filed上面,是对Excel一列的一个描述

- 用在filed(属性)上面,是对Excel一列的一个描述
- 常用属性: 
    name         :   [String][生成Excel表格中列名]
    needMerge:       [boolean][是否需要纵向合并单元格(用于含有list中,单个的单元格,合并list创建的多个row)]
    orderNum :       [String][指定生成Excel中列的顺序,按照数字自然顺序排序]
    savePath :       [String][指定导入Excel中图片的保存路径]
    type         :   [String][导出类型 1 是文本 2 是图片,3 是函数,10 是数字 默认是文本]
    width    :       [Double][指定导出Excel时列的宽度]
    isImportField:   [boolean][是否是导入字段,如果没有说明是错误的Excel]
    exportFormat:    [String][导出Excel的时间格式]
    importFormat:    [String][导入Excel的时间格式]
    format   :       [String][相当于同时设置了exportFormat和importFormat]
    imageType:       [int][导出类型 1 从file读取 2 是从数据库中读取 默认是文件 同样导入也是一样的]
    suffix   :       [String][文字后缀,如% 90 变成90%]

@ExcelCollection 表示一个集合,主要针对一对多的导出,比如一个老师对应多个科目,科目就可以用集合表示

- 一对多的集合注解,用以标记集合是否被数据以及集合的整体排序
- 常用属性:
    name        :       [String][定义集合列名]
    orderNum:           [int][用来指定导出excel集合内列的顺序]
    type        :     [Class\<?>][用来指定导出是创建对象类型]

@ExcelEntity 表示一个继续深入导出的实体,但他没有太多的实际意义,只是告诉系统这个对象里面同样有导出的字段

- 标记是不是导出excel 标记为实体类,一遍是一个内部属性类,标记是否继续穿透
- 常用属性:
    name: [String][定义唯一标识]

@ExcelIgnore 和名字一样表示这个字段被忽略跳过这个导导出

# 1.说明
- 用在属性上,导出Excel时忽略这个属性

@ExcelTarget 这个是作用于最外层的对象,描述这个对象的id,以便支持一个对象可以针对不同导出做出不同处理

- 用在实体类上标识是一个可以通过EasyPOI导入导出的实体类
- 相关属性:
    value:          [String][定义id唯一标识,不能重复]    `常用`
    height:         [Double][定义单元格高度]
    fontSize:       [short ][定义单元格字体大小]

User.java

@Data
@AllArgsConstructor
@NoArgsConstructor
@ExcelTarget("user1")//这个是标识这个对象,里面的值没有影响
public class User implements Serializable {
    @Excel(name = "编号")
    private String id;
    @Excel(name = "姓名",width = 10)
    private String name;
    @Excel(name = "年龄",replace = {"10岁_10","11岁_11"})
    private Integer age;
    @Excel(name = "生日",exportFormat = "yyyy-MM-dd",width = 16)
    private Date bir;

}

Testpoi.java

public class Testpoi {
    
    public List<User> getUsers(){
        List<User> users = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            User user = new User();
            user.setId(String.valueOf(i));
            user.setName("小余"+i);
            user.setAge(5+i);
            user.setBir(new Date());
            users.add(user);
        }
        return users;
    }

    @Test
    public void testExport() throws IOException {

        //获取数据
        List<User> users = getUsers();
        //导出excel
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("用户信息列表", "用户信息"), User.class, users);
        //将excel写入指定位置
        FileOutputStream outputStream = new FileOutputStream("C:/Users/MSI-PC/Desktop/aa.xls");
        workbook.write(outputStream);
        outputStream.close();
        workbook.close();
    }
}

这个代码中都只是展示了一部分属性的用法,在学习中我们可以去举一反三来提高学习效率。

导入

public void testImport() throws Exception {
    ImportParams params = new ImportParams();
    params.setTitleRows(1);//标题占的行数
    params.setHeadRows(1);//header占的行数
    List<Object> excel = ExcelImportUtil.importExcel(new FileInputStream("C:/Users/MSI-PC/Desktop/aa.xls"), User.class, params);
    excel.forEach(System.out::println);
}

标签:String,导出,excel,Excel,导入,easypoi
来源: https://www.cnblogs.com/haotian6/p/14823511.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有