hutool 表头为sql查询出的字段怎么导出

表头要定义Dto。但是sql查出来的字段很多且不固定,比方有1000个,每次查200个左右表头导出,不可能在Dto定义1000个属性吧

两种解决方案。

方案1:DTO 中定义所有的字段,SQL 查询出部分字段存至 DTO 中,然后设置仅输出设置别名的字段,示例代码如下。

// 通过工具类创建writer
ExcelWriter writer = ExcelUtil.getWriter("d:/writeBeanTest.xlsx");

//自定义标题别名
writer.addHeaderAlias("name", "姓名");

// 默认的,未添加alias的属性也会写出,如果想只写出加了别名的字段,可以调用此方法排除之
writer.setOnlyAlias(true);

// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
// 关闭writer,释放内存
writer.close();

方案2:SQL 查询出部分字段存至 Map 中,输出 Map 中的所有字段,示例代码如下。

List<Map<String, Object>> rows = CollUtil.newArrayList(row1, row2);

// 通过工具类创建writer
ExcelWriter writer = ExcelUtil.getWriter("d:/writeMapTest.xlsx");

// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
// 关闭writer,释放内存
writer.close();