easy poi实现不定列导出excel (map方式) 规定某些列是数字格式【附带ExcelExportEntity,ExcelBaseEntity属性说明】

本文介绍如何使用 Easypoi 实现 Excel 的不定列导出功能,适用于业务需求中需要将行数据转换为列数据的场景。通过 Map 方式导出并指定特定列为数字格式。

easy poi实现不定列导出excel -map方式- 以及指定某些列是数字格式

为什么使用不定列转出

 由于业务需求,有时会需要进行行转列之后导出,而因为大多数的行转列后的数据列数是不固定的,所以此时传统的使用实体类加注解的方式就无法解决该问题了。

使用map方式导出

首先引入:

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

导出方法:

import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;

public void downloadTest(HttpServletResponse response) {
   
   
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Random random = new Random();
        //主表数据
        List<Map<String,Object>> datas = new LinkedList<>();
        for (int i = 0;i<10;i++){
   
   
            Map<String,Object> mainMap = new HashMap<>();
            mainMap.put("plan_no",i);
            mainMap.put("name","chanpin"+i);
            mainMap.put("erp_code","chanpinbianma"+i);
            for (int t = 0;t<5;t++) {
   
   
                Date date = new Date();
                Calendar calendar = new GregorianCalendar();
                calendar.setTime(date);
                calendar.add(Calendar.DATE, t);
                date = calendar.getTime();
                mainMap.put(format.format(date), random.nextInt());
            }
            datas.add(mainMap);
        }
        Map<String,Object> data = datas.get(0);
        List<String> dateList = new LinkedList<>();
        for (Object key : data.keySet()
Easy - poi 是一个基于 Apache POI 封装的工具,简化了 Excel 等文档的操作。以下分别介绍横向和纵向模板导出 Excel 的方法。 ### 纵向模板导出 Excel 纵向模板导出通常是指数据按行依次填充到模板中。 #### 步骤 1. **添加依赖** 在 Maven 项目中添加 Easy - poi 的依赖: ```xml <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>4.4.0</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-web</artifactId> <version>4.4.0</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-annotation</artifactId> <version>4.4.0</version> </dependency> ``` 2. **创建模板文件** 创建一个 Excel 模板文件,使用 `{{}}` 作为占位符,例如 `{{name}}`、`{{age}}` 等。 3. **编写 Java 代码** ```java import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import org.apache.poi.ss.usermodel.Workbook; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class VerticalTemplateExport { public static void main(String[] args) { // 模板文件路径 TemplateExportParams params = new TemplateExportParams("template.xlsx"); // 准备数据 Map<String, Object> map = new HashMap<>(); map.put("name", "张三"); map.put("age", 25); // 导出 Excel Workbook workbook = ExcelExportUtil.exportExcel(params, map); try { FileOutputStream fos = new FileOutputStream("vertical_export.xlsx"); workbook.write(fos); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` ### 横向模板导出 Excel 横向模板导出通常是指数据按依次填充到模板中。 #### 步骤 1. **创建模板文件** 同样创建一个 Excel 模板文件,使用占位符,例如 `{{$fe:list t.id}}` 表示循环数据表。 2. **编写 Java 代码** ```java import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import org.apache.poi.ss.usermodel.Workbook; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; class Item { private String id; private String name; public Item(String id, String name) { this.id = id; this.name = name; } public String getId() { return id; } public String getName() { return name; } } public class HorizontalTemplateExport { public static void main(String[] args) { // 模板文件路径 TemplateExportParams params = new TemplateExportParams("horizontal_template.xlsx"); // 准备数据 List<Item> list = new ArrayList<>(); list.add(new Item("1", "苹果")); list.add(new Item("2", "香蕉")); Map<String, Object> map = new HashMap<>(); map.put("list", list); // 导出 Excel Workbook workbook = ExcelExportUtil.exportExcel(params, map); try { FileOutputStream fos = new FileOutputStream("horizontal_export.xlsx"); workbook.write(fos); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值