2011-06-30 26 views
5

Tôi đang tạo tệp Excel trên cơ sở tệp CSV.để đọc tệp CSV, tôi đang sử dụng API Opencsv và Apache POI.Trong csv của tôi chứa 65537 hàng.Có giới hạn sử dụng API opencsv hoặc Apache Poi Api không?

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

khi tôi chạy chương trình này nó cho tôi lỗi sau:

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 

tôi đã cố gắng để theo dõi bao nhiêu hàng nó hỗ trợ tôi tìm thấy nó chỉ hỗ trợ 32.768 và cũng đã cố gắng để ít số lượng hàng, nó hoạt động độc đáo và tạo tệp excel.

hãy giúp tôi phân loại vấn đề này, nếu csv của tôi chứa 65536 hàng thì tôi làm thế nào để viết tệp excel (Xls).

Cảm ơn

Trả lời

8

Tại sao các bạn đúc các num hàng để ngắn trong dòng sau

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

Để lại nó như int

+0

Thanks.i có thêm một câu hỏi cho u nếu số hàng tăng lên 65536 nó có thể ghi tệp (XLS), ở phía bên kia cho XLXS, tôi có thể viết bao nhiêu hàng bằng API này. –

+1

Tôi không chắc chắn. bạn sẽ phải thử và xem nó. Theo như phiên bản excel đi, tôi nghĩ rằng các phiên bản trước của excel (trước năm 2007) đã được giới hạn ở 65536 hàng. Tuy nhiên phiên bản mới hơn có một giới hạn lớn. 1,048,576 là những gì tôi có thể thấy ở đây http://www.contextures.com/xlfaqapp.html#MoreRows .So kiểm tra tệp đầu ra để xem phiên bản của excel có thể xử lý nó – aldrin

+1

Nếu bạn muốn sử dụng hơn 65536 hàng, bạn sẽ cần phải chuyển sang định dạng .xlsx, có nghĩa là thay đổi từ HSSF sang XSSF – Gagravarr

2

Hình như giá trị của nó ngắn của bạn. giá trị tối đa trên một đoạn ngắn là 32767 và bạn đang cố truy cập một giá trị lớn hơn thế.

Các vấn đề liên quan