当前位置: 首页 > news >正文

java中用SXSSFWorkbook把多个list数据和单个实体dto导出到excel如何导出到多个sheet页详细实例?(亲测)

以下是一个详细的示例,展示了如何使用SXSSFWorkbook将多个List数据和单个实体DTO导出到多个Sheet页:

import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFRow;
import org.apache.poi.xssf.streaming.SXSSFCell;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

public class ExportToMultipleSheetsExample {
    public static void main(String[] args) {
        // 创建工作簿
        SXSSFWorkbook workbook = new SXSSFWorkbook();

        // 添加第一个Sheet页(示例:字符串列表)
        List<String> stringData = getListData();  // 获取字符串列表数据
        addSheetWithData(workbook, "String Data", stringData);

        // 添加第二个Sheet页(示例:整数列表)
        List<Integer> integerData = getListData();  // 获取整数列表数据
        addSheetWithData(workbook, "Integer Data", integerData);

        // 添加第三个Sheet页(示例:单个实体DTO)
        EntityDto entityDto = getEntityDto();  // 获取单个实体DTO数据
        addSheetWithEntityDto(workbook, "Entity Data", entityDto);

        try (FileOutputStream fileOut = new FileOutputStream("output.xlsx")) {
            // 将Workbook写入文件
            workbook.write(fileOut);
            System.out.println("Excel导出完成!");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭工作簿
            workbook.dispose();
        }
    }

    private static <T> void addSheetWithData(SXSSFWorkbook workbook, String sheetName, List<T> data) {
        // 创建Sheet页
        SXSSFSheet sheet = workbook.createSheet(sheetName);

        // 添加数据
        for (int i = 0; i < data.size(); i++) {
            SXSSFRow row = sheet.createRow(i);
            SXSSFCell cell = row.createCell(0);
            cell.setCellValue(String.valueOf(data.get(i)));
        }
    }

    private static void addSheetWithEntityDto(SXSSFWorkbook workbook, String sheetName, EntityDto entityDto) {
        // 创建Sheet页
        SXSSFSheet sheet = workbook.createSheet(sheetName);

        // 添加表头
        SXSSFRow headerRow = sheet.createRow(0);
        headerRow.createCell(0).setCellValue("ID");
        headerRow.createCell(1).setCellValue("Name");
        headerRow.createCell(2).setCellValue("Age");

        // 添加数据行
        SXSSFRow dataRow = sheet.createRow(1);
        dataRow.createCell(0).setCellValue(entityDto.getId());
        dataRow.createCell(1).setCellValue(entityDto.getName());
        dataRow.createCell(2).setCellValue(entityDto.getAge());
    }

    private static List<String> getListData() {
        // 返回字符串列表数据(示例)
        return List.of("Apple", "Banana", "Orange", "Grapes");
    }

    private static List<Integer> getIntegerListData() {
        // 返回整数列表数据(示例)
        return List.of(10, 20, 30, 40, 50);
    }

    private static EntityDto getEntityDto() {
        // 返回单个实体DTO数据(示例)
        return new EntityDto(1, "John Doe", 25);
    }

    private static class EntityDto {
        private int id;
        private String name;
        private int age;

        public EntityDto(int id, String name, int age) {
            this.id = id;
            this.name = name;
            this.age = age;
        }

        public int getId() {
            return id;
        }

        public String getName() {
            return name;
        }

        public int getAge() {
            return age;
        }
    }
}

http://www.lryc.cn/news/137597.html

相关文章:

  • SpringBoot 01 如何创建 和pom的解析
  • axios详解
  • Docker分布式仓库
  • SQL注入之万能用户名
  • ubuntu20搭建环境使用的一下指令
  • GAN(生成对抗网络)
  • 实时同步ES技术选型:Mysql+Canal+Adapter+ES+Kibana
  • 禅道后台命令执行漏洞
  • 基于Spark+django的国漫推荐系统--计算机毕业设计项目
  • 向量数据库 Milvus:实现高效向量搜索的技术解析
  • 恒运资本:信创概念再度活跃,华是科技再创新高,南天信息等涨停
  • Synchronized锁升级
  • 记一个宏定义写法
  • 【数据结构】C语言实现栈(详细解读)
  • 3、Spring_容器执行
  • 五、pikachu之RCE
  • 最大不相交区间数量
  • Oracle给表空间添加容量
  • 2023年大数据与区块链国际会议 | EI、Scoups检索
  • 【洛谷算法题】P1000-超级玛丽游戏【入门1顺序结构】
  • ubuntu or kylinos软件安装错误的终极解决方案
  • 30分钟Python自动化从入门到实战(一)
  • FOC之SVPWM学习笔记
  • DSO 系列文章(3)——DSO后端正规方程构造与Schur消元
  • php 使用ES
  • 距离我成为炎帝的一次(比较近的一次)
  • Protobuf在IDEA中的插件安装教程
  • 中间件(上)
  • Python快速检验数据分布
  • uniapp微信小程序点击右上角菜单分享功能权限配置