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