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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/49911537

背 景


  “这个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文档哦……

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏转载gongluck的CSDN博客

CListCtrl控件使用方法总结

今天第一次用CListCtrl控件,遇到不少问题,查了许多资料,现将用到的一些东西总结如下: 以下未经说明,listctrl默认view 风格为report ...

41213
来自专栏進无尽的文章

实践-跑马灯效果及实现过程解析

811
来自专栏PPV课数据科学社区

【学习】七天搞定SAS(四):数据输出

弄清楚了基本的PROC之后,开始研究SAS的输出...毕竟有了数据处理的结果之后,还要有一个比较舒服的输出格式才可以嘛。 SAS的结果发送系统:ODS SAS里...

3808
来自专栏郭霖

Android高级图片滚动控件,编写3D版的图片轮播器

大家好,好久不见了,最近由于工作特别繁忙,已经有一个多月的时间没写博客了,我也是深感惭愧。那么今天的这篇既然是阔别了一个多月的文章,当然要带来更加给力点的内容了...

8178
来自专栏GIS讲堂

修改selectToUISlider实现历史影像的对比与显示

2014年12月7日,星期日,天气,晴,是个好日子,闲来无事,将selectToUISlider与Arcgis for JS结合起来,做了一个类似于历史影像对比...

1293
来自专栏Android常用基础

自定义View(六)-动画- AnimatorSet与XML设置属性动画

AnimatorSet是组合动画,前面在ObjectAnimator.ofPropertyValuesHolder(),时也可以做到控制多个属性做动画,但是.o...

1462
来自专栏码农阿宇

css基础1

Css(实现了页面和样式的彻底分离) 写入样式表的三种方式: 内联样式表,嵌入样式表,外部样式表。 内联样式表的优先级高于嵌入样式表。嵌入式样式表的优先级大于外...

31412
来自专栏三好码农的三亩自留地

Android-打造一个简单通用的Material加载LoadingView

因为网络请求的时间一般是未知的,所以我们一般都是用一个循环的圆圈指示器来提示用户,如下图。

4093
来自专栏青玉伏案

iOS开发之画图板(贝塞尔曲线)

  贝塞尔曲线,听着挺牛气一词,不过下面我们在做画图板的时候就用到贝塞尔绘直线,没用到绘制曲线的功能。如果会点PS的小伙伴会对贝塞尔曲线有更直观的理解。这篇博文...

26110
来自专栏非典型技术宅

iOS动画系列之七:实现类似Twitter的启动动画1. CAKeyframeAnimation2. CAAnimationGroup3. 实现类似Twitter的启动动画

1773

扫码关注云+社区

领取腾讯云代金券