由于生成文件不能落地,使用SXSSFWorkBook来对excel的导出工作
生成excel步骤:
1.创建workbook
SXSSFWorkbook workbook=new SXSSFWorkbook(rowAccessWindowSize);
rowAccessWindowSize:内存中保留的行数(当值为-1时全部保留)
SXSSFWorkBook为了节省内存,使用滑动窗口协议,当内容的行数大于rowAccessWindowSize时,将大于部分通过xml的方式写到磁盘里(合并单元格时如果是纵向合并,则rowAccessWindowSize要大于等于要合并的单元格数)
2.基于workbook创建一个sheet
Sheet sheet = workbook.createSheet(name);
name表示一个sheet的名字,可以为空;
3.基于sheet创建行
Row row = sheet.createRow(index);
index表示行的坐标;
4.基于row创建单元格及赋值
//创建该行第一列单元格
Cell cell = row.createCell(0);
//赋值
cell.setCellValue("123");
5.合并单元格
/**
*firstRow:开始行
* lastRow:结束行
* firstCol:开始列
* lastCol:结束列
*/
CellRangeAddress range = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol);
sheet.addMergedRegion(range);
6.设置打印参数及页眉页脚
PrintSetup printSetup = sheet.getPrintSetup();
//设置打印方向是否为横向
printSetup.setLandscape(true);
//设置打印纸张大小
printSetup.setPaperSize(HSSFPrintSetup.A3_PAPERSIZE);
//设置页眉页脚的边距
printSetup.setHeaderMargin(0.8f);
printSetup.setFooterMargin(0.8f);
//设置打印缩放为70%
printSetup.setScale((short) 70);
//设置页边距
sheet.setMargin(SXSSFSheet.TopMargin,3.0f);
sheet.setMargin(SXSSFSheet.BottomMargin,3.0f);
sheet.setMargin(SXSSFSheet.RightMargin,3.0f);
sheet.setMargin(SXSSFSheet.LeftMargin,3.0f);
//设置整体水平居中
sheet.setHorizontallyCenter(true);
//设置页眉
Header header = sheet.getHeader();
//给页眉赋值及设置字体样式
header.setCenter(HSSFHeader.font("宋体","")+HSSFHeader.fontSize((short) 18)+"这是页眉");
//设置页交
Footer footer = sheet.getFooter();
footer.setCenter("第"+ HSSFFooter.page()+"页,共"+HSSFFooter.numPages()+"页");
7.最后通过workbook.write(OutputStream)写出到流里
通过workbook.dispose()把写到磁盘的文件清理掉;