2

Java アプリケーションが Excel ファイル .xlsx 拡張子を読み取っているときに問題が発生しています。アプリケーションは正常に動作していますが、ワークブックには多くのシートがあり、1、2 シートが正しく読み取られますが、3 シートを読み取ると、すべてのセルが読み取られません。 Excelファイルを開いてチェックしている間、セルは空の値で存在しますが、apache poiがそれを読み取ると、セルは空のセルを無視します。原因とは? アップデート

 FileInputStream file = new FileInputStream(file_location);
  //this.workbook = new HSSFWorkbook(file);
  this.workbook = new XSSFWorkbook(file);
XSSFSheet mySheet = workbook.getSheetAt(index);
       Iterator rowIter = mySheet.rowIterator();
        while(rowIter.hasNext()){
          XSSFRow myRow = (XSSFRow) rowIter.next();
          Iterator cellIter = myRow.cellIterator();
          ArrayList colStoreArray=new ArrayList();



          while(cellIter.hasNext()){
              XSSFCell myCell = (XSSFCell) cellIter.next();
              colStoreArray.add(myCell);
                                   }
          rowArrayHolder.add(colStoreArray);

        } }

読み取りExcelファイルの上で、Excelファイルを1行20セルでチェックしましたが、一部の行では14行しか読み取っていません。私はArrayListを使用していますが、ArrayListへの同時アクセスに問題があるようです。何が原因である可能性がありますか?

4

1 に答える 1

4

反復子は、ファイルで定義されているセルに対してのみ反復します。セルが Excel で一度も使用されていない場合、おそらくファイルに表示されないため (Excel は常に一貫しているわけではありません...)、POI には表示されません。

すべてのセルにヒットしたことを確認したい場合は、代わりにインデックスで検索し、null セルをチェックするか (セルがファイルに存在していないことを示します)、MissingCellPolicynull セルと空白セルをどのようにするかを制御するように設定する必要があります。処理された

于 2012-10-24T14:21:02.273 に答える