This Style does not belong to the supplied Workbook Are you

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

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

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

2011-11-24 00:25:07|  分类:日记 |  标签:java  eclipse  javaexcel  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:
cloneStyleFrom in interface CellStyle

 

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值