这个需要借助 Excel 本身的分页符和重复行功能。
配置分页符:"https://www.grapecity.com.cn/developer/grapecitydocuments/exc..." (https://link.segmentfault.com/?enc=ux90q3ciQkUKdcU7EH1NcQ%3D%3D.RyD5AVJAXOUFR5cDNs1NRX3mmT%2FJq87BRomrPkhnXNP%2FKnIxy4LAmmg1qK9dpkLPlqjvEvZHiB38P%2BgNDNCA%2F6x84UyffutGejq4T2M0TXaHiCesrolgEy1zhQ2Khp9yblXk8CTXA8fo53asAV82R%2BBo5sbhsby2mv7SKk8K1wsADva3NZzyXaqzSnLCD1%2F%2F)
配置顶部重复行:"https://www.grapecity.com.cn/developer/grapecitydocuments/exc..." (https://link.segmentfault.com/?enc=1M2vf%2FXHhSUNSwAqNE2Dyg%3D%3D.nlPr6k0Z%2FMuL41R5nz12cEck58P1YF%2FMnZjSKWUG44tGjzJITR9KLSHJgOSayGoQPdMyIF%2FTqQ4DtfE8tPWehVkGp%2F2n0wiQoicTgF4sVlXm5zOBrNZvEPHqayKOvTOLChsqHDS2iDSjCVCYcOa%2BXPEF6xjYNVN0aGAH4erUpyLrSgVk9OeejK8O5l%2FJggDR7hXzo4%2Bobfxvn52PcDybQQ%3D%3D)
代码如下:
public void SplitData() {
Workbook wb = new Workbook();
IWorksheet sheet = wb.getWorksheets().get(0);
Object data = new Object[][]{
{"A", "A1", "A2"},
{"A", "A1", "A2"},
{"A", "A1", "A2"},
{"A", "A1", "A2"},
{"B", "B1", "B2"},
{"B", "B1", "B2"},
{"B", "B1", "B2"},
{"B", "B1", "B2"},
{"B", "B1", "B2"},
{"C", "C1", "C2"},
{"C", "C1", "C2"},
{"C", "C1", "C2"},
{"C", "C1", "C2"},
};
sheet.getRange("A1:C1").merge();
sheet.getRange("A1:C1").setValue("公司信息");
sheet.getRange("A2").setValue("公司名");
sheet.getRange("B2").setValue("数据1");
sheet.getRange("C2").setValue("数据2");
sheet.getRange("A3:C15").setValue(data);
sheet.getHPageBreaks().add(sheet.getRange("A7"));
sheet.getHPageBreaks().add(sheet.getRange("A12"));
sheet.getPageSetup().setPrintTitleRows("$1:$2");
wb.save("output/SplitData.pdf");
}
结果:
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241208/f91eb91a879688aa192a19733eddc32d.png)