原文:http://jjw198874.blog.163.com/blog/static/1889845522011102401854234/

POI按照源单元格设置目标单元格格式

poi按照一个源单元格设置目标单元格格式,如果两个单元格不在同一个workbook,
要用
HSSFCellStyle下的cloneStyleFrom()方法,
而不能用
HSSFCell下的setCellStyle()方法。
public void copyHssfRow(HSSFRow destRow, HSSFRow sourceRow){
int currentColumnNum = 0;
HSSFCell tempCell = null;
HSSFCellStyle tempCellStyle = null;
System.out.println("ExcelHandler.java copy specific excel row starts------");
for(Iterator i = sourceRow.cellIterator(); i.hasNext();){
tempCell = (HSSFCell)i.next();
//确保这个destRow的待赋值cell有值
if(destRow.getCell(currentColumnNum) == null){
destRow.createCell(currentColumnNum);
}
destRow.getCell(currentColumnNum).setCellValue(tempCell.getStringCellValue());
//红色字体的目的是把目的单元格的格式设置为源单元格的格式,这是正确的方式
tempCellStyle = tempCell.getCellStyle();
destRow.getCell(currentColumnNum).getCellStyle().cloneStyleFrom(tempCellStyle);
System.out.println("DestCell name: " + destRow.getCell(currentColumnNum).getStringCellValue()
+ " SourceCell name: " + tempCell.getStringCellValue());
currentColumnNum++;
}
System.out.println("ExcelHandler.java copy specific excel row ends------");
}

最初红色的代码是这样的:
tempCellStyle = tempCell.getCellStyle();
destRow.getCell(currentColumnNum).setCellStyle(tempCellStyle);
然后出现了报错:
java.lang.IllegalArgumentException: This Style does not belong to the supplied Workbook.
再去google搜索这个报错,发现poi手册中HSSFCellStyle有一个方法会抛出这个异常。

verifyBelongsToWorkbook

public void verifyBelongsToWorkbook(HSSFWorkbook wb)
Verifies that this style belongs to the supplied Workbook. Will throw an exception if it belongs to a different one. This is normally called when trying to assign a style to a cell, to ensure the cell and the style are from the same workbook (if they're not, it won't work)
Throws:
java.lang.IllegalArgumentException- if there's a workbook mis-match
再往下一看,就柳暗花明了。poi要求一个单元格的格式和单元格本身都在一个worksheet,不同的worksheet间不能共用HSSFCellStyle。想了下,这样是对的,这样就可以保证同一个style不会同时属于两个不同sheet的不同单元格,如果对一个单元格做了修改,另一个也会受到牵连。单元格之间的格式相当一个格式集,格式集中的参数数值我们可以一样,但是我们的格式集不能是同一个。

cloneStyleFrom

public void cloneStyleFrom(CellStyle source)Clones all the style information from another HSSFCellStyle, onto this one. This HSSFCellStyle will then have all the same properties as the source, but the two may be edited independently. Any stylings on this HSSFCellStyle will be lost! The source HSSFCellStyle could be from another HSSFWorkbook if you like. This allows you to copy styles from one HSSFWorkbook to another.
Specified by:
cloneStyleFromin interfaceCellStyle

POI按照源单元格设置目标单元格格式相关推荐

  1. easyExcel设置单个单元格(颜色)样式

    背景:需求是使用excel设置目标单元格的样式(颜色),但我之前没有学过easyExcel,在网上找资料的时候,发现有关easyExcel相关的单个单元格样式设置的资料比较少,有的还源码不全,只能说用 ...

  2. POI中设置Excel单元格格式

    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb ...

  3. POI 单元格设置背景颜色失效(背景色设置方式),以及背景颜色生效后单元格边框线消失问题解决

    单元格设置背景颜色失效原因 当只设定 setFillForegroundColor 时是不行的,还需要再设置一下 setFillPattern 即 style.setFillForegroundCol ...

  4. POI导出excel并设置单元格样式和单元格内容中文自适应

    本案例生产环境真是案例POI导出: 开发环境:idea+mybaits3+spring4+springmvc4+maven3+mysql5.7 poi依赖: <dependency>< ...

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

    背 景 "这个excel中的数据怎么不能做加法啊?"."标头这一行的字体怎么这么小啊,我都看不清"."这一列能不能换个颜色,明显一些".&q ...

  6. java设置Excel单元格格式 POI

    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:先获取工作薄对象:HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.cr ...

  7. poi导出Excel时设置某个单元格颜色

    需求: 查询数据库表数据然后到另一个表找错误的对应字段(就是找到需要填充的单元格所在行的列),对这个单元格进行设置背景色,然后导出数据. 具体的工具类如下 import cn.afterturn.ea ...

  8. POI导出Excel:设置字体、颜色、行高自适应、列宽自适应、锁住单元格、合并单元格...

    点击关注公众号,利用碎片时间学习 1. 前言 poi框架可以支持我们在java代码中, 将数据导出成excel , 在实际开发中, 往往还需要设置excel字体,颜色,行高,列宽等属性, 有时候还需要 ...

  9. poi设置excel单元格背景色

    poi任意设置excel单元格背景色 Cell cell = sheet.createRow(0).createCell(0); XSSFCellStyle cellStyle = (XSSFCell ...

最新文章

  1. 程序员的十种级别 看看自己属于哪个级别?
  2. java一维数组插入元素_Java 数组 之 一维数组 追加 元素
  3. _ZNote_Qt_定时器的总结
  4. c语言五子棋坐标覆盖,跪求C语言五子棋悔棋部分实现
  5. 让你更好使用Vista的设置技巧
  6. win10 远程桌面卡顿_Win10系统远程桌面连接缓慢卡顿解决措施
  7. GIS实战应用案例100篇(二十一)-全国分省、市、县净初级生产力NPP数据制作实战(附代码)
  8. 不同账号间的云资源授权方法
  9. 《数据结构与算法分析》习题-----第二章(3)(关于list的题目)
  10. 高性能访客记录系统如何设计?
  11. java第四章编程题(初学篇)
  12. Window服务初级教程以及log4net配置文件初始化
  13. linux mysql workbench 安装_Ubuntu 20.04 上 MySQL Workbench 安装和使用图文详解
  14. python中文近义词工具_python根据词条生成同义词库
  15. 期末考试之排名次java_2020超星尔雅《JavaWeb应用开发》期末测试答案
  16. api读取注册表键值
  17. java学生成绩管理系统类图,学生成绩管理系统的用例类图.ppt
  18. 如何阅读源码学习总结
  19. 图格 Pro for mac(图片拼图切图大师)
  20. C语言函数递归—经典递归问题

热门文章

  1. 启动一个java项目http状态 500 - 内部服务器错误_Java web服务器假死分析
  2. python输出数据格式_这串数据有什么方法用python输出我想要的格式?
  3. SQL盲注工具BBQSQL
  4. java 短路判断_随笔 | 奇淫技巧 | Java:记 return 和短路运算符的妙用
  5. yum 代理_教你如何在5分钟轻松部署nginx反向代理
  6. axure中备注线_琉璃:璇玑小本子上,别人名字都有备注唯独司凤没有,意义很浪漫...
  7. springboot导入项目依赖报错_使用Spring Boot很简单,go!!!
  8. Python读取.edf格式脑电数据文件
  9. 张锋在美赢得“基因剪刀”专利判决!此前与诺奖得主纠纷多年
  10. 推荐系统算法工程师培养计划:博导级教研团队,原理教学、项目实践、大厂内推的一站式培训...