2017-03-10 6 views
0


複数のシートを含むExcelブックからデータを読み込んでいます。
複数のシートからデータを読み取ることはできますが、特定のシートデータを印刷しようとしています"n"回数だけ印刷しようとしています。例については

は:私のワークブックが1-10から番号10枚が含まれている、と私は印刷になり、「シート1」のデータ3回、「シート2」のデータ3回..同様
を印刷したいですすべてのシートデータ"n"回数。
変数:
名前 - 発生数 - 印刷するシートデータの回数を含みます。コード
読む
ワークブックからシートデータをn回書き込む

String[] name = { "a", "b", "c" }; 
    int[] occurances = { 2, 3, 4 }; 
    int c1 = 0; 
    int c2 = 0; 


Excelファイル:

for (int i = 0; i < workbook.getNumberOfSheets(); i++) { 

      Sheet datatypeSheet = workbook.getSheetAt(i); 
      Iterator<Row> iterator = datatypeSheet.iterator(); 
      if (datatypeSheet.getSheetName().equals(name[c1])) { 
       c1++; 
       for (int d = 0; d < occurances[c2]; d++) { 
        c2++; 
        while (iterator.hasNext()) { 

         Row currentRow = iterator.next(); 
         Iterator<Cell> cellIterator = currentRow.iterator(); 

         while (cellIterator.hasNext()) { 

          Cell currentCell = cellIterator.next(); 
          if (currentCell.getCellTypeEnum() == CellType.STRING) { 
           System.out.print(currentCell 
             .getStringCellValue() + "--"); 
          } 
         } 
         System.out.println(); 

        } 
       } 
      } 
     } 


を私がしようとしたが、1時間のために印刷されたすべてのシートのデータを取得しています。
お願いします!

答えて

0

コードにはいくつか問題があります。あなたのコードがうまくいかない理由を理解する最善の方法は、デバッグです(IDEまたはロギングを通じて)。

for (int i = 0; i < workbook.getNumberOfSheets(); i++) { 

     // if your sheets are not in 'a', 'b', 'c' order this code 
     // will not work. think why 
     Sheet datatypeSheet = workbook.getSheetAt(i); 
     if (datatypeSheet.getSheetName().equals(name[c1])) { 
      c1++; 

      // you need this variable to be fixed for your loop 
      int occurancesForSheet = occurances[c2++]; 
      for (int d = 0; d < occurancesForSheet; d++) { 

       // you need a new iterator each time 
       Iterator<Row> iterator = datatypeSheet.iterator(); 
       while (iterator.hasNext()) { 

        Row currentRow = iterator.next(); 
        Iterator<Cell> cellIterator = currentRow.iterator(); 

        while (cellIterator.hasNext()) { 

         Cell currentCell = cellIterator.next(); 
         if (currentCell.getCellTypeEnum() == CellType.STRING) { 
          System.out.print(currentCell 
            .getStringCellValue() + "--"); 
         } 
        } 
        System.out.println(); 

       } 
      } 
     } 
    } 
+0

あなたのシートが 'a'、 'b'、 'c'の順序でない場合、このコードが機能しない場合、このコメントの理由を理解することができます。なぜ "と思う? –

+1

私はそのことも解決しました –

+0

もう1つ質問です。私はExcelシートから読み取ったデータの値を変更できますか? たとえば、シートに4つの整数値が含まれていて、このシートを10回印刷している場合は、繰り返しごとに整数値を増やしたいと思います。 これをどのように達成できますか? ? –

関連する問題