0

私はプログラムを作成しました。1から49までの12の数字を選択でき、結果の組み合わせの数字がスプレッドシートに自動的に表示されるため、各列に6つの数字が表示されます。

以下は私のコードです。

import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class Lotto {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
         int lotto[ ] = new int [12];
            boolean drawn;
            for (int i=0; i<12; i++) {
                    do {
                            drawn = false;
                            lotto[i] = (int)(49*Math.random())+ 1;
                            for (int j=0; j<i; j++)
                                    if (lotto[i] == lotto[j])
                                            drawn = true;
                    } while (drawn);
            }

            for(int i=0;i<12;i++){
                System.out.println(lotto[i]);
            }
            XSSFWorkbook wb = new XSSFWorkbook();
            FileOutputStream fileOut = new FileOutputStream("D:/workbook.xlsx");
            CreationHelper createHelper = wb.getCreationHelper();
            XSSFSheet sheet = wb.createSheet("new sheet");
            int i=0;
            while(i<lotto.length/6){
                 XSSFRow row = sheet.createRow(i);
            for(int k=0;k<6;k++){
                for(int j=0;j<lotto.length;j++){

            row.createCell(k).setCellValue(lotto[j]);
                }
            }
            i++;
    }
           // FileOutputStream fileOut = new FileOutputStream("workbook.xls");
            wb.write(fileOut);
            fileOut.close();

    }

}

たとえば、上記のプログラムによって生成された乱数は次のとおりです。

30 44 39 7 6 33 19 28 31 21 49 22

しかし、xlsファイルでは次のように挿入されます

30 30 30 30 30 30
44 44 44 44 44 44

次のように出力する必要があります

30 44 39 7 6 33
19 28 31 21 49 22
4

1 に答える 1

2

論理的な問題かもしれないと思います。これを試して:

XSSFRow row = null;
int rowCounter = 0;
int cellCounter = 0;
for (int i = 0; i < lotto.length; i++) {
   if ((i % 6) == 0) {
      cellCounter = 0;
      row = (XSSFRow) sheet.createRow(rowCounter);
      rowCounter++;
   }
   row.createCell(cellCounter).setCellValue(lotto[i]);
   cellCounter++;
}
于 2012-08-14T06:29:56.760 に答える