easyexcel icon indicating copy to clipboard operation
easyexcel copied to clipboard

可以做到一个页签用模板填充,一个页直接写入吗?

Open ftdmao opened this issue 2 years ago • 1 comments

建议先去看文档 快速开始常见问题 异常代码

     String templateFileName = "E:\\xnworkspace\\mgmt-data-analysis\\src\\main\\resources\\template\\mainReportTpl.xlsx";
        String fileName = "E:\\xnworkspace\\mgmt-data-analysis\\sdf.xlsx";

        MainReportData data = projectService.mainReportData(41);
        List<DetailReportData> mainReportData = projectService.detailReportData(41);
        DetailReportData.replaceStatusField(mainReportData);
        List<OnceAbsoluteMergeStrategy> mergeStrategyList = DetailReportData.getMergeStrategy(mainReportData);
        List<HorizontalCellStyleStrategy> styleStrategyList = DetailReportData.getStyleStrategy(mainReportData);
        ExcelWriterBuilder write = EasyExcel.write(fileName);
        write.withTemplate(templateFileName).sheet().doFill(data);

        ExcelWriterSheetBuilder sheet2 = write.head(DetailReportData.class).sheet(1, "任务详情");
        for (OnceAbsoluteMergeStrategy onceAbsoluteMergeStrategy : mergeStrategyList) {
            sheet2.registerWriteHandler(onceAbsoluteMergeStrategy);
        }
        for (HorizontalCellStyleStrategy horizontalCellStyleStrategy : styleStrategyList) {
            sheet2.registerWriteHandler(horizontalCellStyleStrategy);
        }
        sheet2.doWrite(mainReportData);

异常提示 image image

建议描述 目前的情况是第一个只要加上了第二个页签的处理,第一个页签的数据就是空的

ftdmao avatar Sep 13 '22 10:09 ftdmao


import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;
import com.alibaba.excel.write.merge.OnceAbsoluteMergeStrategy;
import com.alibaba.excel.write.metadata.style.HorizontalCellStyleStrategy;

import java.util.List;

public class ExcelExport {

    public static void main(String[] args) {
        String templateFileName = "E:\\xnworkspace\\mgmt-data-analysis\\src\\main\\resources\\template\\mainReportTpl.xlsx";
        String fileName = "E:\\xnworkspace\\mgmt-data-analysis\\sdf.xlsx";

        // 获取数据
        MainReportData data = projectService.mainReportData(41);
        List<DetailReportData> mainReportData = projectService.detailReportData(41);

        // 对数据进行预处理
        DetailReportData.replaceStatusField(mainReportData);
        List<OnceAbsoluteMergeStrategy> mergeStrategyList = DetailReportData.getMergeStrategy(mainReportData);
        List<HorizontalCellStyleStrategy> styleStrategyList = DetailReportData.getStyleStrategy(mainReportData);

        // 创建Excel写入器
        ExcelWriterBuilder write = EasyExcel.write(fileName);

        // 使用模板文件填充数据
        write.withTemplate(templateFileName).sheet().doFill(data);

        // 创建第二个sheet并写入数据
        ExcelWriterSheetBuilder sheet2 = write.head(DetailReportData.class).sheet(1, "任务详情");
        for (OnceAbsoluteMergeStrategy onceAbsoluteMergeStrategy : mergeStrategyList) {
            sheet2.registerWriteHandler(onceAbsoluteMergeStrategy);
        }
        for (HorizontalCellStyleStrategy horizontalCellStyleStrategy : styleStrategyList) {
            sheet2.registerWriteHandler(horizontalCellStyleStrategy);
        }
        sheet2.doWrite(mainReportData);
    }
}

ljluestc avatar May 22 '24 13:05 ljluestc