2017-03-18 11 views
1

私はApache Poiを使用してxlsxファイルに書き込む方法を学習しています。以下のコードでは2配列を使用しています。 1.Month 2.Logging_Hours。Apache POIを使用してxlsxファイルに書き込む、ファイルの最後の列で期待される回答を得る

月配列を使用して最初の行に列名を割り当てていますが、これはうまくいきます。私のコードで別の配列が必要ですLogging_Hoursは各列に印刷されますが、以下のコード。

For_Expectedは、画面を参照してください "Expected_Xlsx" For_Actualは、画面を参照してください "Actual_Xlsx"

public class Writing_xlsx { 

    public static void main(String[] args) throws IOException { 

    Workbook wb = new XSSFWorkbook(); 

    Sheet sheet1=wb.createSheet("SheetOne"); 

    String [] Month={"January" , "Feb", "March","Apr"}; 
    int [] Logging_Hours={ 7 ,5, 9,10}; 
    int f=0; 
    System.out.println(Month[0]); 

    Row r=sheet1.createRow(f); 

    for(int i=0;i<4;i++){ 

    r.createCell(i).setCellValue(Month[i]); 

    } 

    for(int c=0;c<4;c++){} 
     int d=0; 
     while(d<4){ 

     for(int rn=1;rn<=4;rn++) { 

      r=sheet1.createRow(rn); 
      r.createCell(d).setCellValue(Logging_Hours[rn-1]); 
      System.out.println(Logging_Hours[rn-1]); 

     } 
     d++; 
     } 

     FileOutputStream fileOut = new FileOutputStream("workbook.xlsx"); 

    wb.write(fileOut); 
    fileOut.close();  
    wb.close(); 

} 

} 

For_Expected画面を参照してください "Expected_Xlsx"

This is the expected screen after running the programm

For_Actualが参照します「Actual_Xlsx」

This is the actual screen i am getting

ありがとうございました。申し訳ありませんが、悪いコードを私はちょうど学習段階にあります。

答えて

2

あなたは例えば、データの書き込みに2つのforループ(ネスト)が必要になります:

for (int rn = 1; rn <= 4; rn++) { 
    Row row = sheet1.createRow(rn); 
    for (int i = 0; i < 4; i++) { 
     row.createCell(i).setCellValue(Month[rn-1]); 
    } 
} 

現在forループは、行ごとに1つだけcellを作成し、我々は内の値を記述する必要があるのに対し、それに値を書き込み、行ごとに4つのセルすべて。

+0

、これは私がA列のように各列にLogging_Hoursを印刷する別の答えです:7,5,9,10 あなたの提案がやった:カラムA:この@balvinderdhillon 7,7,7,7 –

+0

あなたの質問で "期待される答え"と一致しています。 –

+0

それを慎重に参照してください.......私の期待されるコードは、列Aのo/pを与える:7,5,9,10 –

関連する問題