原文: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. 算法提高课-搜索-DFS之连通性模型-AcWing 1113. 红与黑:dfs和bfs两种做法
  2. 京东JDHBase异地多活实践
  3. mysql---复杂的sql语句join的使用(left join,right join)
  4. Hitting refresh on my career(译)----重新定义我的事业
  5. Java-进阶:Java-File--IO—1
  6. 可以装linux的路由器,[转载]linux路由器Quagga的配置(一):安装
  7. Maven知识点整理
  8. java数组变量_关于java 的数组引用变量
  9. 漫画算法python版下载_漫画算法:小灰的算法之旅 PDF 全格式完整版
  10. 五分钟学会工业机器人DH参数标定
  11. 如何修改计算机背景色,照片换背景颜色 电脑如何修改照片底色?如何修改照片背景色?...
  12. linux 7 realm,系统运维|Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC...
  13. Python生成器与迭代器
  14. 组合数学--排列组合
  15. React全家桶(技术栈) redux 代码
  16. 股民学堂:短线炒股绝招 值得一学
  17. LeetCode 428. 序列化和反序列化 N 叉树***
  18. Samba服务+Samba实验
  19. 从0到1搭建大数据平台之监控
  20. 初链——区块链的安全和效率问题辨析

热门文章

  1. 如何不让右下角出现“windows安全报警”
  2. 获取网页源代码的最简单办法
  3. 从Flash Remoting For .Net 返回一个数组数据给Flash
  4. DeviceEventEmitter 使用监听通知进行传值
  5. coc跑团san数值规则_为什么B站上有些coc跑团7版规则san值四五十,但是掉的时候只是掉1D3,是不是应该是20上限?...
  6. 自动化测试工具有哪些_软件测试工程师要具备哪些能力和技能?
  7. iOS 11开发教程(十四)iOS11应用代码添加视图
  8. 解决Fiddler无法抓到手机的会话包
  9. 添加组件_Flextools 添加真实凯斯门特双开窗动态组件
  10. mysql 5.7.15 安装_mysql 5.7.15 安装配置方法图文教程