poi导出Excel合并单元格、设置打印参数页眉页脚等

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

 

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值