0
点赞
收藏
分享

微信扫一扫

EasyExcel循序渐进

村里搬砖的月野兔 2022-01-12 阅读 96
  1. 先创建一个普通maven项目
  2. 在pom中引入xml相关依赖
    <dependencies>
    
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.1.7</version>
        </dependency>
    
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.5</version>
        </dependency>
    
        <dependency>
            <groupId>org.apache.xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
            <version>3.1.0</version>
        </dependency>
    
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
        </dependency>
    
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    
    </dependencies>

  3. 创建实体类
    实体类属性为Excel为默认字段名
    注解@ExcelProperty()为导出的Excel中的表头
    注解@ExcelIgnore  就会忽略这个字段,不会打印出来
    @Data
    public class ExcelStudentData {
    
        @ExcelProperty("姓名")
        private String name;
    
        @ExcelProperty("生日")
        private Date birthday;
    
        @ExcelProperty("薪资")
        private Double salary;
    
        /**
         * 忽略这个字段
         */
        @ExcelIgnore
        private String password;
    }

  4. 测试
    07版本与03版本写入方式略有不同
    03版本的Excel一次写入最多65536行
    写入前需要先创建excel文件夹
    public class ExcelWriteTest {
    
        /**
         * 最简单的写
         */
        @Test
        public void simpleWrite07() {
    
            String fileName = "d:/excel/01-simpleWrite-07.xlsx";
            // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
            EasyExcel.write(fileName, ExcelStudentData.class).sheet("模板").doWrite(data());
        }
    
        @Test
        public void simpleWrite03() {
    
            String fileName = "d:/excel/01-simpleWrite-03.xls";
            // 如果这里想使用03 则 传入excelType参数即可
            EasyExcel.write(fileName, ExcelStudentData.class).excelType(ExcelTypeEnum.XLS).sheet("模板").doWrite(data());
        }
    
        private List<ExcelStudentData> data(){
            List<ExcelStudentData> list = new ArrayList<>();
    
            //算上标题,做多可写65536行
            //超出:java.lang.IllegalArgumentException: Invalid row number (65536) outside allowable range (0..65535)
            for (int i = 0; i < 65535; i++) {
                ExcelStudentData data = new ExcelStudentData();
                data.setName("Tom" + i);
                data.setBirthday(new Date());
                data.setSalary(12222.55);
                data.setPassword("123"); //即使设置也不会被导出
                list.add(data);
            }
    
            return list;
        }
    
    }

     
  5. 指定写入列
    在@ExcelProperties注解中,为列配置index属性
  6. 自定义格式转换
    比如日期:@DateTimeFormat("")
    比如数值百分比:@NumberFormat("#.##%")
举报

相关推荐

0 条评论