因表头是通过查询的数据导出的,我想通过easypoi 将查询的数据跟表头通过多sheet页导出 ,easypoi版本4.4.0

下午好🌅🌅🌅
本答案参考通义千问
在使用 EasyPoi(版本 4.4.0)进行数据导出时,如果表头是通过查询动态获取的,并且希望将不同表头的数据导出到不同的 Sheet 页面中,可以通过以下方式实现。
ExcelExportUtil 进行多 Sheet 导出。定义一个通用的实体类来保存每一行数据,例如:
public class ExportData {
private String key;
private String value;
// 构造方法、getter 和 setter
}
假设你从数据库中查询得到表头信息,例如:
List<String> headers = Arrays.asList("姓名", "年龄", "性别");
根据业务逻辑构造数据列表,例如:
List<ExportData> dataList = new ArrayList<>();
dataList.add(new ExportData("张三", "25", "男"));
dataList.add(new ExportData("李四", "30", "女"));
以下是完整的代码示例,展示如何将不同表头的数据导出到多个 Sheet 中:
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.FileOutputStream;
import java.util.*;
public class MultiSheetExport {
public static void main(String[] args) throws Exception {
// 假设我们有两个不同的表头和数据集
List<String> header1 = Arrays.asList("姓名", "年龄", "性别");
List<ExportData> data1 = Arrays.asList(
new ExportData("张三", "25", "男"),
new ExportData("李四", "30", "女")
);
List<String> header2 = Arrays.asList("编号", "名称", "价格");
List<ExportData> data2 = Arrays.asList(
new ExportData("001", "苹果", "5.00"),
new ExportData("002", "香蕉", "3.00")
);
// 创建 Workbook
Workbook workbook = ExcelExportUtil.exportExcel(
new ExportParams("Sheet1", "Sheet1"),
ExportData.class,
data1
);
// 添加第二个 Sheet
int sheetIndex = workbook.getNumberOfSheets();
workbook.createSheet("Sheet2");
// 设置第二张 Sheet 的表头
ExportParams exportParams2 = new ExportParams("Sheet2", "Sheet2");
exportParams2.setHeaders(header2); // 设置自定义表头
// 导出数据到第二张 Sheet
ExcelExportUtil.exportExcel(workbook, exportParams2, ExportData.class, data2);
// 保存文件
try (FileOutputStream fos = new FileOutputStream("multi_sheet_export.xlsx")) {
workbook.write(fos);
}
System.out.println("导出成功!");
}
}
exportParams.setHeaders(...) 设置。new ExportParams("SheetName", "SheetName") 设置 Sheet 名称。Workbook 对象。import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.FileOutputStream;
import java.util.*;
public class MultiSheetExport {
public static void main(String[] args) throws Exception {
// 示例数据
List<String> header1 = Arrays.asList("姓名", "年龄", "性别");
List<ExportData> data1 = Arrays.asList(
new ExportData("张三", "25", "男"),
new ExportData("李四", "30", "女")
);
List<String> header2 = Arrays.asList("编号", "名称", "价格");
List<ExportData> data2 = Arrays.asList(
new ExportData("001", "苹果", "5.00"),
new ExportData("002", "香蕉", "3.00")
);
// 创建第一个 Sheet
Workbook workbook = ExcelExportUtil.exportExcel(
new ExportParams("Sheet1", "Sheet1"),
ExportData.class,
data1
);
// 创建第二个 Sheet
int sheetIndex = workbook.getNumberOfSheets();
workbook.createSheet("Sheet2");
// 设置第二个 Sheet 的表头
ExportParams exportParams2 = new ExportParams("Sheet2", "Sheet2");
exportParams2.setHeaders(header2);
// 导出数据到第二个 Sheet
ExcelExportUtil.exportExcel(workbook, exportParams2, ExportData.class, data2);
// 保存文件
try (FileOutputStream fos = new FileOutputStream("multi_sheet_export.xlsx")) {
workbook.write(fos);
}
System.out.println("✅ 多 Sheet 数据导出完成!");
}
}
class ExportData {
private String key;
private String value;
public ExportData(String key, String value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public String getValue() {
return value;
}
}
| 步骤 | 内容 |
|------|------|
| 1 | 定义数据模型 ExportData |
| 2 | 动态获取表头信息 |
| 3 | 构建数据集合 |
| 4 | 使用 ExcelExportUtil 导出到多个 Sheet |
| 5 | 设置自定义表头和 Sheet 名称 |
重点:
exportParams.setHeaders(...) 是关键方法,用于设置自定义表头。
ExcelExportUtil.exportExcel(Workbook, ExportParams, Class, List) 用于向已有 Workbook 添加新的 Sheet。
如果你有更复杂的表头结构或需要处理大量数据,请告诉我,我可以进一步优化代码。