【POI框架实战】——POI设置Excel单元格格式

原创 2015年11月26日 22:04:08



背 景


  “这个excel中的数据怎么不能做加法啊?”、”标头这一行的字体怎么这么小啊,我都看不清”、”这一列能不能换个颜色,明显一些”、“你把这一列的数据给我留两个小数位。”、“这些数据能不能以货币的类型展示啊,就每个三位一个小逗号那种……”

  最近几天一直在“优化”系统导出excel的功能,为什么这么简单的功能需要用上好几天呢?

  1、产品部太苛刻
  2、我没有报着积极主动的心态去开发,产品提一个bug我改一个bug,改完之后没有主动点一遍整个系统所有用到导出的地方(主要原因)

  如图,我们在手动设置Excel单元格格式的时候,有许多种格式供我们选择:

   这里写图片描述

  在excel中,只需要动动小手指,就可以完成设置单元格格式的操作,java应用poi导出excel时,也有很多种格式供我们选择,下面整理一下最近遇到的单元格格式,掌握了以下内容,想要设计出满足需求的excel单元格应该不是难事。

  这里主要用到两个POI中的类:HSSFCellStyle和HSSFFont 。

  先创建一个工作簿:

HSSFWorkbook workbook=new HSSFWorkbook(); //创建工作簿



设置单元格的样式


  HSSFCellStyle主要用来设置单元格本身的格式,比如背景颜色、边框等。

  先利用工作簿实例创建HSSFCellStyle 实例cellStyle:

HSSFCellStyle cellStyle= workbook.createCellStyle();

  (1)设置单元格背景颜色

  玫瑰色

cellStyle.setFillForegroundColor(IndexedColors.ROSE.getIndex()); 
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

  蓝色

cellStyle.setFillForegroundColor(IndexedColors.BLUE.getIndex()); 
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

  黄色

cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); 
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

  ……

  在POI中可以用short类型的数值、IndexedColors类等方式设置颜色(为了代码可读建议用后者),更多颜色可以参考《POI设置单元格背景颜色》

  (2)设置单元格边框类型

cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框-单线 
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);//下边框-双线
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_NONE);//左边框-无边框
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框-虚线

  方法中的参数类型为short,表示边框的类型(如粗细、双线等),也可以用 (short)1、(short)2 …… 表示,但为了代码的可读还是推荐用上述方式表示。如果想知道哪种格式对应哪个值,可以查看API,还有个简单的办法就是在eclipse中查看,把鼠标放到相应常量上,可以看到对应的short值:

  这里写图片描述

  (3)设置单元格边框颜色

cellStyle.setTopBorderColor(IndexedColors.BLUE.getIndex());//上边框为蓝色 
cellStyle.setBottomBorderColor(IndexedColors.YELLOW.getIndex());//下边框为黄色
cellStyle.setLeftBorderColor(IndexedColors.RED.getIndex());//左边框为红色
cellStyle.setRightBorderColor(IndexedColors.GREEN.getIndex());//右边框为绿色

  (4)设置对齐方式

cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);//左对齐 
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中对齐
cellStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);//右对齐
cellStyle.setAlignment(HSSFCellStyle.ALIGN_JUSTIFY);//自适应



设置字体的格式


HSSFFont 主要用来设置单元格中字体的格式,如字体、颜色、加粗等等。

  利用工作簿实例创建HSSFFont 实例font:

HSSFFont font = workbook.createFont();

  (1)设置字体

font.setFontName(“宋体”);  //设置字体为宋体  

  还可以设置“仿宋”、”黑体”、”楷体”……

  (2)设置字体大小

font.setFontHeightInPoints((short) 16);

  数值越大,字体越大哦~~
  
  (3)设置字体颜色

font.setColor(fontStyle.get(“color”));

  (4)设置字体加粗

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗 
font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//不加粗

  设置完字体后,不要忘了把字体的样式添加到单元格格式中哦,否则刚才的工夫就白费了→_→:

cellStyle.setFont(font);// 添加字体样式



  当然,POI还有很多强大的功能,暂不一一例举了,这里只是总结一下小编
最近接触到的,更多POI功能可以参考POI的API文档哦……

  是不是很简单啊,快动动你的小爪子试一试吧~~

版权声明:本文为博主原创文章,未经博主允许不得转载。

【项目实战】Java POI之Excel导出经典案例三

该案例的实现和【项目实战】Java POI之Excel导出经典案例一类似,点击【导出Excel】按钮进行操作。 1、创建Excel模板文档,如下: 2、在JSP中添加按钮代码: ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

用poi框架进行批量导入导出实例

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能。我们这里使用poi对数据库中的数据进行批量导出,以及...

用POI框架读写Excel

package com.yonyou.poi.excel; import java.io.File; import java.io.FileInputStream; import java....

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

POI中设置Excel单元格格式样式(居中,字体,边框等)

创建sheet什么的就不多说了,直接进入正题 [java] view plaincopyprint? HSSFCellStyle cellStyle = wb.createCell...
  • spp_1987
  • spp_1987
  • 2013年10月31日 11:32
  • 66284

POI--HSSFCellStyle类

通过POI来进行单元格格式的设定 设定格式使用「HSSFCellStyle」类。它有一个构造方法: protected HSSFCellStyle(short index, ExtendedF...

POI格式化Cell样式

http://loginleft.iteye.com/blog/1820734 通过一个实例演示怎样通过POI设置Excel单元格的边框、字体、颜色、大小、下划线、合并、对齐方式。 Excel文件...

Apache POI 设置宽度和行高

FileOutputStream fos = new FileOutputStream("D:\\15.xls"); HSSFWorkbook wb = new HSSFWorkbook(); ...

【POI框架实战】——POI导出Excel时设置单元格类型为数值类型

最近做的一个ITFIN的项目中,导出的数据中有文本格式,也有货币格式,所以为了方便在将来导出的表格中做计算,存放货币先用正则表达式判断数据是否为数值型,如果为数值型,则设置单元格格式为整数或者小数;然...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【POI框架实战】——POI设置Excel单元格格式
举报原因:
原因补充:

(最多只允许输入30个字)