easyexcel
easyexcel copied to clipboard
可以做到一个页签用模板填充,一个页直接写入吗?
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);
异常提示
建议描述 目前的情况是第一个只要加上了第二个页签的处理,第一个页签的数据就是空的
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);
}
}