私は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をキャストしている
行数が増えるともう1つの質問があります65536 XLXSの反対側にファイル(XLS)を書き込むことができます。このAPIを使用して書き込む行の量を指定します。 –
私はよく分かりません。あなたはそれを試して見なければなりません。限りExcelのバージョンが行く限り、私は以前のバージョンのExcel(2007年以前)は65536行に制限されたと思います。しかし、新しいバージョンにはかなり大きな制限があります。 1,048,576ここで私はhttp://www.contextures.com/xlfaqapp.html#MoreRowsを見ることができます。出力ファイルをテストして、Excelのバージョンがそれを処理できるかどうかを確認してください – aldrin
65536を超える行を使用する場合は、 HSSFからXSSFに変更することを意味する.xlsx形式に切り替える必要があります。 – Gagravarr