在java中,csv到xls的数量超过了65536行

我有一个Java程序读取一个CSV文件,并将其转换成一个XLS文件:

String file2 = "myFile.csv"; FileInputStream fis2 = new FileInputStream(file2); DataInputStream myInput2 = new DataInputStream(fis2); String thisLine; arList = new ArrayList(); while ((thisLine = myInput2.readLine()) != null) { al = new ArrayList(); String strar[] = thisLine.split(","); for (int j = 0; j < strar.length; j++) { al.add(strar[j]); } arList.add(al); i++; } HSSFWorkbook hwb = new HSSFWorkbook(); HSSFSheet sheet = hwb.createSheet("new sheet"); for (int k = 0; k < arList.size(); k++) { ArrayList ardata = (ArrayList) arList.get(k); HSSFRow row = sheet.createRow((short) 0 + k); for (int p = 0; p < ardata.size(); p++) { HSSFCell cell = row.createCell((short) p); cell.setCellValue(ardata.get(p).toString()); } } FileOutputStream fileOut = new FileOutputStream(file2.replace("csv", "xls")); hwb.write(fileOut); fileOut.close(); myInput2.close(); fis2.close(); 

但是,我有一个超过65536行的CSV,因此上面的代码导致错误。

我能做些什么来处理csv的65536行以上的代码。

谢谢阅读!

你的问题可能是在HSSFSheet类。 在这一行

 HSSFRow row = sheet.createRow((short) 0 + k) 

你正在调用一个简短的参数。 短的types只有2个字节长,所以,类只能存储高达65535行。

如果你有权访问这个类,你可以重构它,使用int或甚至long。

我假设问题出在您用来存储CSV文件的ArrayList中。 尝试使用Reader一次处理您的CSV文件,而不是一次读取所有内容。

不要在CreateRow的调用中将索引投下。 短裤限于65535的最大值。