是否有使用opencsv API或Apache Poi Api的限制?

我正在创build基于CSV文件的Excel文件。为了读取CSV文件,我使用了Opencsv API和Apache POI。在我的csv中包含了65537行。

class Test { public static void main(String[] args) throws IOException { Workbook wb = new HSSFWorkbook(); CreationHelper helper = wb.getCreationHelper(); Sheet sheet = wb.createSheet("new sheet"); CSVReader reader = new CSVReader(new FileReader("SampleData.csv")); String[] line; int r = 0;int count=0; while ((line = reader.readNext()) != null) { Row row = sheet.createRow((short) r++); count=count+1; System.out.println("count-"+count); for (int i = 0; i < line.length; i++) row.createCell(i) .setCellValue(helper.createRichTextString(line[i])); } // Write the output to a file FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close(); }} 

当我运行这个程序,它给了我下面的错误:

 Exception in thread "main" java.lang.IllegalArgumentException: Invalid row number (-32768) outside allowable range (0..65535)at org.apache.poi.hssf.usermodel.HSSFRow.setRowNum(HSSFRow.java:232) at org.apache.poi.hssf.usermodel.HSSFRow.<init>(HSSFRow.java:86) at org.apache.poi.hssf.usermodel.HSSFRow.<init>(HSSFRow.java:70) at org.apache.poi.hssf.usermodel.HSSFSheet.createRow(HSSFSheet.java:205) at org.apache.poi.hssf.usermodel.HSSFSheet.createRow(HSSFSheet.java:71) at com.arosys.utilityclasses.Test.main(Test.java:23)Java Result: 1 

我试图跟踪它支持多less行,我发现它只支持32768,也尝试less数行,它很好地工作,并创buildExcel文件。

请帮我解决这个问题,如果我的csv包含65536行,那么我怎样才能打包excel文件(xls)。

谢谢

你为什么要在下面一行中input行号

  Row row = sheet.createRow((short) r++); 

将其保留为int

看起来这是你的短暂的价值。 一个短的最大值是32767,你试图访问一个比这更多。