poi 开发回顾 模板读取

来源:互联网 发布:sybase 创建数据库 编辑:程序博客网 时间:2024/06/04 20:13

最近参加了一个日本保险公司的内部项目管理的项目,我担当的是文档出力处理这个模块,开发过程中遇到几个问题,解决方法同大家分享下。

处理文档的单元格样式是从模板文件里边读取出来的。

第一个问题是单元格的颜色问题,出力的文件单元格颜色和模板上的颜色不一致,经查API,发现每一个workbook对象都有一个专属的调色板属性对象,

解决办法看以下代码。

//出力工作簿的调色板对象取得HSSFPalette pale = toWorkbook.getCustomPalette();//模板文件cell(1,6)的样式对象取得HSSFCellStyle fromCellStyle = fromSheet.getRow(1).getCell(6).getCellStyle();//前景色取得HSSFColor color = fromCellStyle.getFillForegroundColorColor();//前景色的rgb值取得short[] co = color.getTriplet();//出力工作簿的调色板对象索引为COLOR_INDEX的位置的颜色设定pale.setColorAtIndex(COLOR_INDEX, (byte)co[0], (byte)co[1], (byte)co[2]);//记录索引颜色的位置和用处colorMap.put("littleHead", COLOR_INDEX++);

由于公司的保密协议不能把所有代码列出,以上是处理的方法,在用到特定颜色的地方,根据map对象的key取得特定的颜色即可。

第二个问题是列宽的设定,同样列宽的设定值也是从模板文件里读取出来的,但是直接toSheet.setColumnWidth(index,fromSheet.getColumnWidth(index)),宽度始终

有误差,经查api,列宽的设定是根据当前sheet的第一个单元格的font属性决定的,如果当前第一个单元格的font属性和模板文件的一样,那么toSheet.setColumnWidth(index,fromSheet.getColumnWidth(index)),宽度就会一样。

0 0
原创粉丝点击