poi 开发回顾 模板读取

1 篇文章 0 订阅
1 篇文章 0 订阅

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

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

第一个问题是单元格的颜色问题,出力的文件单元格颜色和模板上的颜色不一致,经查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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值