环境:jxl版本 2.6.9,截至文章发表时的最新版本
问题:根据jxl api中的说明,jxl.sheet类提供一个实例方法getMergedCells(),可以获取该sheet中所有合并后的区域
但是在如下代码中确不能体现
- Workbook workbook=Workbook.getWorkbook(newFile(filePath));// filePath执行文件存放的路径
- Sheet[]sheets=workbook.getSheets();
- for(inti=0;i<sheets.length;i++){
- Range[]ranges=sheets[i].getMergedCells(); // 获取当前sheet中合并的单元格区域数组
- System.out.println("sheet"+i+"包含"+ranges.length+"个区域"); // 打印个数
- }
- // 【注】代码中非关键部分省略。
结果都是ranges.length都是0,不论sheet中是否包含合并的单元格区域。冥思苦想,不得起解,后将代码改为:
- Workbookworkbook=Workbook.getWorkbook(newFile(filePath));
- intsheetSize=workbook.getNumberOfSheets(); // 获取excel中sheet个数
- for(inti=0;i<sheetSize;i++){
- Sheetsheet=workbook.getSheet(i);// 使用getSheet(int)方法获取某个sheet
- Range[]ranges=sheet.getMergedCells();
- System.out.println("sheet"+i+"包含"+ranges.length+"个区域");
- }
这个居然又正常了!后思考其原因,应该是jxl的一个隐形错误,可能是出于效率等原因的考虑,在getSheets()方法处理过程中省掉了对这块内容的填充[^_^,纯属个人猜测!]。