POI打印

这篇博客介绍了如何使用Java的POI库进行商品信息的打印,包括两种方式:常规设置打印和使用预设模板打印。内容涵盖POI jar包的下载、打印需求的八步流程、后台代码示例及效果展示。示例中展示了查询含有'时尚'关键词的商品并进行打印操作。
摘要由CSDN通过智能技术生成

poi的所需jar包下载:https://download.csdn.net/download/ly_linyuan/10373008
我这里以打印商品信息表为例
两种打印方式:
一种常规设置打印
一种使用自己做好的模板打印

1.在项目中导入poi的jar包
这里写图片描述

maven项目中:
这里写图片描述

2.打印需求八步:
1)创建一个工作簿workbook
2)创建一个工作表sheet
3)创建一个行对象row(下标起始值为0)
4)创建一个单元格对象cell(下标起始值为0)
5)给单元格设置内容
6)设置单元格的样式,设置字体和字体的大小
7)保存,关闭流对象
8)下载

3.提前准备好设置需要打印的数据和表格的样式
这里写图片描述

4.后台代码实例:

/**
 * 打印出根据名称模糊查询到的商品信息
 */
@RequestMapping("/print/{goodName}")
public String print(@PathVariable String goodName,HttpServletResponse response,HttpServletRequest request) throws Exception {
    goodName = new String(goodName.getBytes("ISO-8859-1"),"UTF-8");  
    //通用变量
    int rowNo=0,cellNo=1;//行号   列号
    Row nRow =null;//行对象
    Cell nCell = null;//单元格对象

    //1.创建工作簿
    //Workbook wb = new HSSFWorkbook();//只支持excel2003版本        扩展名xls
    //Workbook wb = new XSSFWorkbook();  //支持excel2007+版本          扩展名xlsx
      Workbook wb = new SXSSFWorkbook();  //支持excel2007+版本          扩展名xlsx   不支持模板操作,可以将产生的一部分对象从内存中转移到磁盘。
                                          //默认转移对象的个数为100,如果new SXSSFWorkbook(500)代表内存中对象个数达到500就转移到磁盘
    //2.创建工作表
    Sheet sheet = wb.createSheet();

    //设置列宽   本身是个bug会出现一些偏差  
    sheet.setColumnWidth(cellNo++, 18*256);
    sheet.setColumnWidth(cellNo++, 14*256);
    sheet.setColumnWidth(cellNo++, 10*256);
    sheet.setColumnWidth(cellNo++, 10*256);
    sheet.setColumnWidth(cellNo++, 10*256);
    sheet.setColumnWidth(cellNo++, 8*256);
    sheet.setColumnWidth(cellNo++, 10*256);
    sheet.setColumnWidth(cellNo++, 10*256);

    cellNo=1;//重置

    //3.创建行对象
    //=========================================大标题=============================
    nRow = sheet.createRow(rowNo++);//创建行对象
    nRow.setHeightInPoints(36);//设置行高
    nCell = nRow.createCell(cellNo);//创建单元格对象

    //合并单元格
    sheet.addMergedRegion(new CellRangeAddress(0,0,1,8));//横向合并单元格

    //设置单元格的内容
    nCell.setCellValue(goodName+"商品信息数据表");

    //设置单元格样式
    nCell.setCellStyle(this.bigTitle(wb));

    //=======================================小标题=======================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值