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()方法处理过程中省掉了对这块内容的填充[^_^,纯属个人猜测!]。

你可能感兴趣的:(JXL)