POI导出Excel笔记

来源:互联网 发布:杜蕾斯震动棒 知乎 编辑:程序博客网 时间:2024/05/29 10:09

导出excel是个常用的问题,然而这一次摸索之后并不知道下一次是什么时候再用,记录一下,方便自己


目录

      • 目录
      • 常用的类型
      • 代码
      • Excel文件输出

常用的类型

  • HSSFWorkbook 所有工作的起点,可以创建HSSFSheet、HSSFCellStyle、HSSFFont等常用类型的对象
  • HSSFSheetsheet页,主要操作对象,创建/获取行对象最常用
  • HSSFCell 单元格
  • HSSFStyle 单元格样式,颜色,对齐`
  • HSSFFont 字体,可以加粗等
  • HSSFComment 备注,悬浮展示/点击展示
  • 导出一个基本的Excel这些类型足够了

代码

基本的练习代码:

//工作簿对象,所有的sheet都在在这个对象上操作,创建样式、创建sheet、HSSFWorkbook workbook=new HSSFWorkbook();//一个表格页面,可以用default构造,可以传入sheet名构造HSSFSheet sheet=workbook.createSheet("可以的我的哥");//绘制图形,不限于图形,比如备注也可放在这个容器中HSSFPatriarch p= sheet.createDrawingPatriarch();//绘制线条p.createSimpleShape(new HSSFClientAnchor(2,1,2,2,(short)2,2,(short)2,2));HSSFComment comment = p.createComment(new HSSFClientAnchor(0,              0, 0, 0, (short) 4, 2, (short) 6, 5));  // 设置注释内容comment.setString(new HSSFRichTextString("可以在POI中添加注释!"));//comment.setVisible(true);//控制注释是否直接显示,false为不可见,默认false//样式对象、操作单元格的属性HSSFCellStyle style2 = workbook.createCellStyle();  style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);  //设置填充模式,不设置填充模式,填充颜色将不生效style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);  style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);  style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);  style2.setBorderRight(HSSFCellStyle.BORDER_THIN);  style2.setBorderTop(HSSFCellStyle.BORDER_THIN);  style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);  style2.setWrapText(true);// auto change linestyle2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// vertical be centerstyle2.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);// horizontal be center//构建一个行,在excel的sheet中,行号是从1开始的,但是在对象操作时,从0开始HSSFRow  row=sheet.createRow(1);//构建一个单元格对象,对象的索引也是从0开始的,由行和指定 column唯一确定位置HSSFCell cell=row.createCell((short) 1);cell.setCellStyle(style2);//区域对象Region region =new Region((short)0, (short)0, (short)2, (short)2);      //合并指定区域的单元格,ps:取合并单元格对象的时候,取得是第一个单元格的坐标sheet.addMergedRegion(region);

Excel文件输出

  1. 本地保存
workbook.write(new FileOutputStream(new File("path.xls")));
  1. 从服务器发送给客户端
//通过写成byte[]对象,就可以利用response对象以附件的形式返回给浏览器,直接下载  public byte[] getBytes() throws IOException {    ByteArrayOutputStream out = new ByteArrayOutputStream();    workbook.write(out);    return out.toByteArray();  }//body参数就是上面getBytes()产生的数组了private void writeExcelToClient(byte[] body, HttpServletResponse response,            String fileName) throws IOException {        //指明内容类型,没深究这个类型问题,下回        //在项目里,这里试过2-3种类型,最终客户端都正常接收了...(狗血...        response.setContentType("multipart/form-data");        response.addHeader("Content-Disposition", "attachment;filename="                + fileName);        response.setContentLength(body.length);        OutputStream out = response.getOutputStream();        out.write(body);        out.close();    }
0 0
原创粉丝点击