是否有使用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,你试图访问一个比这更多。