我有一個生成的excel報告。大多數情況下,當行數達到2000時,它工作正常。當行> 10000時,jxls文件生成將永遠掛起
今天早上,我試圖生成爲11000行和無法弄清楚,爲什麼它會只是掛,因爲它是遵循同樣不變的代碼的報告 - 見下文。除了XLSTransformer可能真的很慢以外,我仍然無法弄清楚。
List<Map<String, Object>> maps = new ArrayList<Map<String, Object>>();
Map<String, Object> sheetData = null;
for(EntityForecastWrapper wrapper : wrappers) {
sheetName = Integer.toString(wrapper.getEntityId());
sheetNames.add(sheetName);
sheetData = new HashMap<String, Object>();
sheetData.put("wrapper", wrapper);
maps.add(sheetData);
}
Map<String, Object> beansMap = new HashMap<String, Object>();
Workbook workbook = null;
XLSTransformer transformer = new XLSTransformer();
try {
Logger.getLogger(getClass()).error("generating excel");
InputStream is = getClass().getResourceAsStream(getReportTemplate().getLabel());
workbook = transformer.transformMultipleSheetsList(is, maps, sheetNames, "map", beansMap, 0);
Logger.getLogger(getClass()).error("generated excel");
/*FileOutputStream fos = new FileOutputStream(new File(fileName));
workbook.write(fos);
fos.flush();
fos.close();*/
} catch(Exception e) {
Logger.getLogger(getClass()).error("Error writing excel data: ", e);
}
的代碼基本上都不來自行回:
workbook = transformer.transformMultipleSheetsList(is, maps, sheetNames, "map", beansMap, 0);
這是非常快,當行數不是很大(例如,500到1000行)。該行的內容不會改變,列同#...
任何想法?
謝謝!