由于生成文件不能落地,使用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()把写到磁盘的文件清理掉;