导出大表
This commit is contained in:
parent
f66f6ce0ab
commit
64506eaa69
@ -146,29 +146,65 @@ public class CaseplatformCaseExcelController {
|
||||
contentStyle.setBorderRight(BorderStyle.THIN);
|
||||
|
||||
// ExcelWriter writer = EasyExcel.write(outputStream, ExportExpertCaseExcelVo.class)
|
||||
// ExcelWriter writer = EasyExcel.write(response.getOutputStream(), ExportExpertCaseExcelVo.class)
|
||||
// .head(head)
|
||||
// .excelType(ExcelTypeEnum.XLSX)
|
||||
// .registerWriteHandler(new HorizontalCellStyleStrategy(headStyle, contentStyle))
|
||||
// .build();
|
||||
//
|
||||
// WriteSheet writeSheet = EasyExcel.writerSheet("劳务费明细")
|
||||
// .needHead(true)
|
||||
// .relativeHeadRowIndex(1) // 数据从第3行开始,前2行为标题
|
||||
// .build();
|
||||
//
|
||||
// // 写数据
|
||||
// writer.write(processedList, writeSheet);
|
||||
//
|
||||
// // 合并大标题
|
||||
// Workbook workbook = (Workbook) writer.writeContext().writeWorkbookHolder().getWorkbook();
|
||||
// Sheet sheet = workbook.getSheetAt(0);
|
||||
// sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, head.size() - 1));
|
||||
// //Row titleRow = sheet.createRow(0);
|
||||
// Row titleRow = sheet.getRow(0);
|
||||
// if (titleRow == null) {
|
||||
// titleRow = sheet.createRow(0);
|
||||
// }
|
||||
|
||||
// 1. 构建ExcelWriter(先不写入数据,先处理大标题行)
|
||||
ExcelWriter writer = EasyExcel.write(response.getOutputStream(), ExportExpertCaseExcelVo.class)
|
||||
.head(head)
|
||||
.excelType(ExcelTypeEnum.XLSX)
|
||||
.registerWriteHandler(new HorizontalCellStyleStrategy(headStyle, contentStyle))
|
||||
// 关键:禁用EasyExcel自动创建表头行(后续手动控制行号)
|
||||
.needHead(false)
|
||||
.build();
|
||||
|
||||
WriteSheet writeSheet = EasyExcel.writerSheet("劳务费明细")
|
||||
.needHead(true)
|
||||
.relativeHeadRowIndex(1) // 数据从第3行开始,前2行为标题
|
||||
.build();
|
||||
|
||||
// 写数据
|
||||
writer.write(processedList, writeSheet);
|
||||
|
||||
// 合并大标题
|
||||
// 2. 先获取Workbook和Sheet,手动创建大标题行(行0),此时行未刷盘
|
||||
Workbook workbook = (Workbook) writer.writeContext().writeWorkbookHolder().getWorkbook();
|
||||
Sheet sheet = workbook.getSheetAt(0);
|
||||
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, head.size() - 1));
|
||||
//Row titleRow = sheet.createRow(0);
|
||||
if (sheet == null) {
|
||||
sheet = workbook.createSheet("劳务费明细");
|
||||
}
|
||||
|
||||
// 3. 手动创建行0(大标题行),此时行在内存中,未刷盘
|
||||
Row titleRow = sheet.getRow(0);
|
||||
if (titleRow == null) {
|
||||
titleRow = sheet.createRow(0);
|
||||
}
|
||||
|
||||
// 合并大标题行(0行0列 到 0行最后一列)
|
||||
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, head.size() - 1));
|
||||
|
||||
|
||||
// 4. 构建WriteSheet:表头从行1开始,数据从行2开始(对应relativeHeadRowIndex(1))
|
||||
WriteSheet writeSheet = EasyExcel.writerSheet("劳务费明细")
|
||||
.needHead(true) // 重新开启表头,表头写入行1
|
||||
.relativeHeadRowIndex(1) // 数据从行2开始(表头行1 + 1)
|
||||
.build();
|
||||
|
||||
// 5. 最后写入数据(行号递增:行0→行1→行2+,无回头修改)
|
||||
writer.write(processedList, writeSheet);
|
||||
|
||||
titleRow.setHeightInPoints(30); // 设置标题行高
|
||||
Cell titleCell = titleRow.createCell(0);
|
||||
titleCell.setCellValue("人工肝诊疗病例征集项目专家劳务费表");
|
||||
@ -251,7 +287,7 @@ public class CaseplatformCaseExcelController {
|
||||
response.setContentType("multipart/form-data");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
writer.finish();
|
||||
|
||||
response.getOutputStream().flush();
|
||||
outputStream.close();
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user