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

来源:互联网 发布:数据库表如何设计null 编辑:程序博客网 时间:2024/06/10 13:57

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

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

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

 

  1. Workbook workbook = Workbook.getWorkbook(new File(filePath));           // filePath执行文件存放的路径 
  2. Sheet[] sheets = workbook.getSheets();
  3. for (int i = 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. Workbook workbook = Workbook.getWorkbook(new File(filePath));
  2. int sheetSize = workbook.getNumberOfSheets();   // 获取excel中sheet个数
  3.     
  4. for (int i = 0; i < sheetSize; i ++) {
  5.     Sheet sheet = workbook.getSheet(i);    // 使用getSheet(int)方法获取某个sheet
  6.     Range[] ranges = sheet.getMergedCells();
  7.     System.out.println("sheet" + i + "包含" + ranges.length + "个区域");
  8. }

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

0 0
原创粉丝点击