2011-06-30 6 views
5

私はCSVファイルに基づいてExcelファイルを作成しています.CSVファイルを読み込むために、私はOpencsv APIとApache POIを使用しています。私のCSVには65537行が含まれています。私はそれが私はそれだけで32768をサポートして発見し、また、行数が少ないためにしようとしたサポートどのくらいの行追跡しようとしたopencsv APIまたはApache Poi Apiを使用する制限がありますか?

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 

を、それは:

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(); 
}} 

私はこのプログラムを実行すると、エラー、次の私を与えますうまく動作し、Excelファイルを作成します。

私のcsvに65536行が含まれている場合、どうすれば私がExcelファイル(Xls)を書き込むかが分かります。なぜあなたは、次の行に短いに

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

を行NUMをキャストしている

答えて

8

おかげで

+0

行数が増えるともう1つの質問があります65536 XLXSの反対側にファイル(XLS)を書き込むことができます。このAPIを使用して書き込む行の量を指定します。 –

+1

私はよく分かりません。あなたはそれを試して見なければなりません。限りExcelのバージョンが行く限り、私は以前のバージョンのExcel(2007年以前)は65536行に制限されたと思います。しかし、新しいバージョンにはかなり大きな制限があります。 1,048,576ここで私はhttp://www.contextures.com/xlfaqapp.html#MoreRowsを見ることができます。出力ファイルをテストして、Excelのバージョンがそれを処理できるかどうかを確認してください – aldrin

+1

65536を超える行を使用する場合は、 HSSFからXSSFに変更することを意味する.xlsx形式に切り替える必要があります。 – Gagravarr

2

intとしてそれを残すことがあなたの短い値だように見えます。短期間の最大値は32767で、それ以上のものにはアクセスしようとしています。

関連する問題