jxl处理合并单元格时的一个问题,需注意

环境:jxl版本 2.6.9,截至文章发表时的最新版本

问题:根据jxl api中的说明,jxl.sheet类提供一个实例方法getMergedCells(),可以获取该sheet中所有合并后的区域

但是在如下代码中确不能体现

 

  1. Workbook workbook=Workbook.getWorkbook(newFile(filePath));// filePath执行文件存放的路径
  2. Sheet[]sheets=workbook.getSheets();
  3. for(inti=0;i<sheets.length;i++){
  4. Range[]ranges=sheets[i].getMergedCells(); // 获取当前sheet中合并的单元格区域数组
  5. System.out.println("sheet"+i+"包含"+ranges.length+"个区域"); // 打印个数
  6. }
  7. // 【注】代码中非关键部分省略。

结果都是ranges.length都是0,不论sheet中是否包含合并的单元格区域。冥思苦想,不得起解,后将代码改为:

  1. Workbookworkbook=Workbook.getWorkbook(newFile(filePath));
  2. intsheetSize=workbook.getNumberOfSheets(); // 获取excel中sheet个数
  3. for(inti=0;i<sheetSize;i++){
  4. Sheetsheet=workbook.getSheet(i);// 使用getSheet(int)方法获取某个sheet
  5. Range[]ranges=sheet.getMergedCells();
  6. System.out.println("sheet"+i+"包含"+ranges.length+"个区域");
  7. }

这个居然又正常了!后思考其原因,应该是jxl的一个隐形错误,可能是出于效率等原因的考虑,在getSheets()方法处理过程中省掉了对这块内容的填充[^_^,纯属个人猜测!]。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值