EasyExcel的使用--填充excel

EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。

 

今天根据官网(www.yuque.com/easyexcel/doc/read)指导,试了一个简单的填充例子,如下。

了解常见API的话,访问地址:常见api · 语雀 (yuque.com)

填充效果如下图所示:

1.创建填充实体。

/**
 * 填充excel实体
 */
@Data
public class FillData {
    private String name;
    private double number;
}

2.测试填充main方法。

public static void main(String[] args) {
        String templateFileName ="template.xlsx";
        String fileName = "fill.xlsx";
        /********简单填充,可以根据对象填充,也可以根据Map填充***********/
        // 方案1 根据对象填充
        // 这里会填充到第一个sheet, 然后文件流会自动关闭
        FillData fillData = new FillData();
        fillData.setName("张三");
        fillData.setNumber(5.2);
        EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(fillData);

        // 方案2 根据Map填充
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("name", "张三");
        map.put("number", 5.2);
        EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(map);

        /********填充列表***********/
        // 方案1 一下子全部放到内存里面 并填充
        EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(data());
        // 方案2 分多次填充,会使用文件缓存(省内存)
        ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build();
        WriteSheet writeSheet = EasyExcel.writerSheet().build();
        excelWriter.fill(data(), writeSheet);
        excelWriter.fill(data(), writeSheet);
        // 千万别忘记关闭流
        excelWriter.finish();

        /********复杂填充***********/
        // 这里注意 入参用了forceNewRow 代表在写入list的时候不管list下面有没有空行 都会创建一行,然后下面的数据往后移动。默认 是false,会直接使用下一行,如果没有则创建。
        // forceNewRow 如果设置了true,有个缺点 就是他会把所有的数据都放到内存了,所以慎用
        // 简单的说 如果你的模板有list,且list不是最后一行,下面还有数据需要填充 就必须设置 forceNewRow=true 但是这个就会把所有数据放到内存 会很耗内存
        // 如果数据量大 list不是最后一行 参照下一个
        FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
        excelWriter.fill(data(), fillConfig, writeSheet);
        excelWriter.fill(data(), fillConfig, writeSheet);
        map.put("date", "2019年10月9日13:28:28");
        map.put("total", 1000);
        excelWriter.fill(map, writeSheet);
        excelWriter.finish();

        /********数据量大的复杂填充***********/
        // 直接写入数据
        excelWriter.fill(data(), writeSheet);
        excelWriter.fill(data(), writeSheet);

        // 写入list之前的数据
        map.put("date", "2019年10月9日13:28:28");
        excelWriter.fill(map, writeSheet);

        // list 后面还有个统计 想办法手动写入
        // 这里可以直接用list,也可以用对象
        List<List<String>> totalListList = new ArrayList<List<String>>();
        List<String> totalList = new ArrayList<String>();
        totalListList.add(totalList);
        totalList.add(null);
        totalList.add(null);
        totalList.add(null);
        // 第四列
        totalList.add("统计:1000");
        // 这里是write 别和fill 搞错了
        excelWriter.write(totalListList, writeSheet);
        excelWriter.finish();
        // 总体上写法比较复杂 但是也没有想到好的版本 异步的去写入excel 不支持行的删除和移动,也不支持备注这种的写入,所以也排除了可以
        // 新建一个 然后一点点复制过来的方案,最后导致list需要新增行的时候,后面的列的数据没法后移,后续会继续想想解决方案

        /********横向填充***********/
        excelWriter.fill(data(), fillConfig, writeSheet);
        excelWriter.fill(data(), fillConfig, writeSheet);

        map.put("date", "2019年10月9日13:28:28");
        excelWriter.fill(map, writeSheet);

        // 别忘记关闭流
        excelWriter.finish();

        /********多列表组合填充***********/
        // 如果有多个list 模板上必须有{前缀.} 这里的前缀就是 data1,然后多个list必须用 FillWrapper包裹
        excelWriter.fill(new FillWrapper("data1", data()), fillConfig, writeSheet);
        excelWriter.fill(new FillWrapper("data1", data()), fillConfig, writeSheet);
        excelWriter.fill(new FillWrapper("data2", data()), writeSheet);
        excelWriter.fill(new FillWrapper("data2", data()), writeSheet);
        excelWriter.fill(new FillWrapper("data3", data()), writeSheet);
        excelWriter.fill(new FillWrapper("data3", data()), writeSheet);

        map.put("date", "2019年10月9日13:28:28");
        excelWriter.fill(map, writeSheet);

        // 别忘记关闭流
        excelWriter.finish();

    }

    /**
     * 组装要导入的数据
     * @return
     */
    private static List<ExportData> data() {
        List<ExportData> list = new ArrayList<ExportData>();
        for (int i = 0; i < 10; i++) {
            ExportData data = new ExportData();
            data.setString("字符串" + i);
            data.setDate(new Date());
            data.setDoubleData(0.56);
            list.add(data);
        }
        return list;
    }

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
### 回答1: EasyExcel是一个Java库,用于读取和写入Excel文件。它提供了简单高效的API,使开发人员可以快速地填充Excel使用EasyExcel,您可以使用以下代码来写入数据到Excel: ``` String fileName = "test.xlsx"; // 定义表格头 List<List<String>> head = new ArrayList<List<String>>(); List<String> headCoulumn1 = new ArrayList<String>(); headCoulumn1.add("编号"); List<String> headCoulumn2 = new ArrayList<String>(); headCoulumn2.add("姓名"); List<String> headCoulumn3 = new ArrayList<String>(); headCoulumn3.add("年龄"); head.add(headCoulumn1); head.add(headCoulumn2); head.add(headCoulumn3); // 定义数据 List<List<Object>> data = new ArrayList<List<Object>>(); for (int i = 0; i < 100; i++) { List<Object> dataRow = new ArrayList<Object>(); dataRow.add(i); dataRow.add("张三" + i); dataRow.add(20 + i); data.add(dataRow); } // 写入到Excel EasyExcel.write(fileName, data).head(head).sheet().doWrite(); ``` 您也可以使用EasyExcel读取Excel中的数据: ``` String fileName = "test.xlsx"; // 读取数据 EasyExcel.read(fileName, new Sheet(1, 3)).doReadSync(); ``` 希望以上信息能帮助您。 ### 回答2: EasyExcel是一款基于Java的开源库,可以用来快速、高效地填充Excel文件。使用EasyExcel填充Excel文件非常简便,以下是使用EasyExcel填充Excel文件的步骤: 1. 引入EasyExcel依赖:首先,在项目的pom.xml文件中添加EasyExcel的依赖项。可以在Maven仓库中找到EasyExcel的最新版本,添加对应的依赖。 2. 创建Excel模板:根据自己的需求,创建一个Excel模板文件。可以随意设置表头、单元格样式等。 3. 创建数据源:准备需要填充Excel文件中的数据源,可以是Java对象、Map、List等。对数据源进行处理,使其符合Excel模板的要求。 4. 使用EasyExcel填充数据:使用EasyExcel提供的相关API,将数据源中的数据填充Excel模板中。具体填充的方式可以根据需求选择,可以通过Java对象的方式填充,也可以通过注解的方式进行填充。 5. 保存Excel文件:填充完成后,使用EasyExcel提供的API,将填充好的数据保存为Excel文件。可以指定保存的路径和文件名。 使用EasyExcel填充Excel文件的好处是,它可以帮助我们快速实现Excel文件的导出功能,减少了手动操作的时间和成本。同时,EasyExcel还支持导出大量数据的功能,填充速度快,占用内存少,可以有效提高程序的性能。 总之,EasyExcel是一款简单易用的Excel填充工具,通过几个简单的步骤就能实现Excel文件的填充和导出功能。无论是对于开发人员还是普通用户,都是一个很好用的工具。 ### 回答3: EasyExcel是一款Java开发的简化Excel操作的工具,可以通过代码快速填充Excel表格。 使用EasyExcel填充Excel非常简单,首先需要引入EasyExcel的依赖包。在项目中添加如下pom.xml配置即可: ```xml <!-- EasyExcel依赖 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.0.0-beta2</version> </dependency> ``` 然后,通过编写Java代码来实现填充Excel。下面是一个示例代码: ```java public class ExcelFillExample { public static void main(String[] args) { // 创建Excel写入器 ExcelWriter writer = EasyExcel.write("output.xlsx").build(); // 定义表头 List<List<String>> head = new ArrayList<>(); head.add(Arrays.asList("姓名", "年龄", "性别")); // 定义数据 List<List<Object>> data = new ArrayList<>(); data.add(Arrays.asList("张三", 20, "男")); data.add(Arrays.asList("李四", 25, "女")); data.add(Arrays.asList("王五", 30, "男")); // 写入数据 Sheet sheet = new Sheet(1, 0); sheet.setHead(head); sheet.setAutoWidth(true); writer.write1(data, sheet); // 关闭Excel写入器 writer.finish(); } } ``` 上述代码中,我们首先创建了一个Excel写入器,并指定输出的文件名为"output.xlsx"。然后,定义了表头和数据。接着,创建了一个Sheet对象,并设置了表头和自动列宽。最后,通过调用`write1()`方法将数据写入Excel。 以上就是使用EasyExcel填充Excel的简单示例。需要注意的是,EasyExcel还支持更多的功能,如读取、合并单元格、样式设置等,开发者可以根据自己的需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值