ループを含む以下のコード ブロックがあります。
Row row = null;
Cell cell = null;
String dataVal = null;
String[] temp = null;
for (int j = 0; j < this.myDataValues.size(); j++) {
row = sheet.createRow(rownum++);
temp = this.finalRowValues.get(j);
for (int i = 0; i < 4; i++) {
cell = row.createCell(i);
dataVal = temp[i];
if (NumberUtils.isNumber(dataVal)) {
double d = Double.valueOf(dataVal);
cell.setCellValue(d);
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
cell.setCellStyle(styles.get("currency"));
} else if (isValidDate(dataVal)) {
cell.setCellValue(dataVal);
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
cell.setCellStyle(styles.get("date"));
} else {
cell.setCellValue(temp[i]);
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellStyle(styles.get("data"));
}
sheet.autoSizeColumn(i);
}
}
各オブジェクトにmyDataValues
は4 つの値が含まれています。List
String[]
String[]
これを Rational Application Developer バージョン 8 と Apache POI 3.8 で実行しています。
約 5500 の要素がmyDataValues
あり、かなり小さい値だと思います。
ただし、このコード ブロックの実行には 1 時間以上かかります。
これには何か問題があると思います。それぞれが 4 つの要素を含む 5500 の要素は、かなり高速に実行され、数分で実行されるはずです。考えられる原因は何ですか?このブロックをより速く実行する方法はありますか?
マシンの使用可能なメモリやその他の問題に問題はありません。すべてが期待どおりに機能しており、確認済みです。問題はこのブロックのみです。