POI使用cell.getCellStyle()设置指定单元格颜色,但是其它没有指定的单元格也会变色
2015-09-08 14:59
351 查看
HSSFCell cell = row.createCell((short)i);
cell.getCellStyle().setAlignment(HSSFCellStyle.ALIGN_RIGHT);
....
你可能发现创建后的excel文件所有的列都变成右对齐了...
翻了翻代码,还挺复杂,大意就是在创建的xls的时候会产生若干默认的ExtendedFormatRecord,这样在调用
row.createCell((short)i)创建普通的cell的时候,如果POI没有办法根据cell信息(i)找到对应的
ExtendedFormatRecord,则会返回固定的一个(at
0xF),这样在每次getCellStyle的时候返回的都是同一个style的reference. 所以对它的修改会影响整个xls文档.
(上面说的不严谨,仅供参考)
解决方法:
新建一个cellStyle,然后将原来的Style复制到新的style中,然后在这个新的style上进行操作。
cell.getCellStyle().setAlignment(HSSFCellStyle.ALIGN_RIGHT);
....
你可能发现创建后的excel文件所有的列都变成右对齐了...
翻了翻代码,还挺复杂,大意就是在创建的xls的时候会产生若干默认的ExtendedFormatRecord,这样在调用
row.createCell((short)i)创建普通的cell的时候,如果POI没有办法根据cell信息(i)找到对应的
ExtendedFormatRecord,则会返回固定的一个(at
0xF),这样在每次getCellStyle的时候返回的都是同一个style的reference. 所以对它的修改会影响整个xls文档.
(上面说的不严谨,仅供参考)
解决方法:
新建一个cellStyle,然后将原来的Style复制到新的style中,然后在这个新的style上进行操作。
//所以如果你需要修改某个cell的样式,如下 HSSFCell cell = row.createCell((short)i); HSSFCellStyle cStyle = wb.createCellStyle(); //不直接使用getCellStyle(),用cloneStyleFrom就能实现保持原有样式 cStyle .cloneStyleFrom(cell.getCellStyle()); cStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT); cell.setCellStyle(cStyle);
相关文章推荐
- 2 配置环境变量
- 字符数组与字符指针
- 更改UIImage颜色
- 11gR2 Agent 简介
- javascript Object Pool 对象池
- C# 重启程序本身
- 宏定义求结构体成员偏移地址
- 论文建议
- The Triangle--nyoj 18
- oc自学-预处理程序
- json数组遍历
- [leetcode]Power of Two C语言
- Java开发中的23种设计模式详解(转)
- 使用jQuery zTree插件快速实现目录树
- 酷划邀请码,酷划官方邀请码
- The Triangle--nyoj 18
- Android --MainActivity模板
- 9月5日 linux任务计划作业
- 5.权限模块
- Spring中Quartz调度器的使用