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