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));
//=======================================小标题=======================