Hallo Leute,
ich schreibe mit POI eine relativ große Exceldatei.
Dabei gehe ich mit dem Scanner Zeile für Zeile eine andere Datei durch und schreibe immer 65000 Zeilen in ein Arbeitsblatt und erstelle dann das nächste.
Zu erwarten sind 400432 Zeilen. (wenn ich nur den Scanner die lines rauslesen lasse läuft das programm durch)
Leider stockt die Funktion, so wie ich sie hier schreibe bei einer Zeile zwischen 240000 - 330000 --> also immer unterschiedlich (bei der gleichen Datei)
Hat einer eine Idee was ich machen kann?
ich schreibe mit POI eine relativ große Exceldatei.
Dabei gehe ich mit dem Scanner Zeile für Zeile eine andere Datei durch und schreibe immer 65000 Zeilen in ein Arbeitsblatt und erstelle dann das nächste.
Zu erwarten sind 400432 Zeilen. (wenn ich nur den Scanner die lines rauslesen lasse läuft das programm durch)
Leider stockt die Funktion, so wie ich sie hier schreibe bei einer Zeile zwischen 240000 - 330000 --> also immer unterschiedlich (bei der gleichen Datei)
Hat einer eine Idee was ich machen kann?
Java:
public void writeExcelData(String tempFilePath) throws Exception{
long time = System.currentTimeMillis();
FileOutputStream out = new FileOutputStream("C:/workbook.xls");
HSSFWorkbook wb = new HSSFWorkbook();
Sheet s = wb.createSheet();
int i = 0;
Scanner scanner = new Scanner(new File(tempFilePath));
while(scanner.hasNextLine()) {
if(i == 65000) {
System.out.println("Sheet after " + (System.currentTimeMillis() - time));
i = 0;
s = wb.createSheet();
}
String line = scanner.nextLine();
Row row = s.createRow(i);
String[] splitLine = line.split("\t");
for(int k = 0; k < splitLine.length; k++) {
Cell cell = row.createCell(k);
cell.setCellValue(splitLine[k]);
}
splitLine = null;
line = null;
i++;
}
wb.write(out);
out.close();
System.out.println("Gesamter Vorgang " + (System.currentTimeMillis() - time));
}