具有最大行的 Java JXL 异常

标签 java jxl

我正在从包含 127923 条记录的 vector 创建一个 Excel 工作表,当我尝试输入记录时出现以下异常。

jxl.write.biff.RowsExceededException: The maximum number of rows permitted on a worksheet been exceeded
    at jxl.write.biff.WritableSheetImpl.getRowRecord(WritableSheetImpl.java:1214)
    at jxl.write.biff.WritableSheetImpl.addCell(WritableSheetImpl.java:1151)
    at com.ibm.database.excel.WriteExcel.addLabel(WriteExcel.java:176)
    at com.ibm.database.excel.WriteExcel.write(WriteExcel.java:76)
    at com.ibm.database.excel.FileGenerator.generateExcel(FileGenerator.java:13)
    at com.ibm.database.taxoreader.TaxonomyReader.main(TaxonomyReader.java:46)

我知道因为 excel 工作表不允许超过 65536 条记录,但我的代码每次达到 60000 标记时我都试图创建一个新工作表,但它不起作用。任何人都可以建议我我做错了什么。这是我的代码。

public void write (Vector list) throws IOException, WriteException{
    int k=0,row=0,column=0;
    WritableFont times10pt = new WritableFont(WritableFont.TIMES, 10);
    // Define the cell format
    times = new WritableCellFormat(times10pt);
    // Lets automatically wrap the cells
    times.setWrap(true);
    TaxonomyBean bean= null;
    File file = new File("Test.xls");
    WorkbookSettings wbSettings = new WorkbookSettings();
    wbSettings.setLocale(new Locale("en", "EN"));
    WritableWorkbook workbook = Workbook.createWorkbook(file, wbSettings);  
    WritableSheet sheet= workbook.createSheet(""+k,k);
    for(int i=0,j=0;i<list.size();i++,j++){
        if(j==60000){
         k=k+1;
         workbook.createSheet(""+k, k);
         j=0;
        }
        sheet = workbook.getSheet(k);
        bean=(TaxonomyBean)list.elementAt(i);
        column=0;row=i;
        System.out.println("adding "+bean.getDescription()+" at "+j+" in "+k+" and i "+i);
        addLabel(sheet, column, row, bean.getDescription());
        column++;
        addLabel(sheet, column, row, bean.getTaxonomyDescription());
    }
    workbook.write();
    workbook.close();

}

最佳答案

您可以将循环代码替换为:

for(int i = 0;i < list.size();i++)
{
    if(i % 60000 == 0)
    {
        k++;
        workbook.createSheet("" + k,k);
    }

    sheet = workbook.getSheet(k);
    bean = (TaxonomyBean)list.elementAt(i);

    column = 0;
    row = i % 60000;

    addLabel(sheet, column, row, bean.getDescription());
    column++;
    addLabel(sheet, column, row, bean.getTaxonomyDescription());
}

关于具有最大行的 Java JXL 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13658369/

相关文章:

java - 使用 jxl api 将新列插入到现有的 excel 文件中

java - Spring Integration http 出站网关 POST 响应不包含转义的符号

java.lang.IllegalArgumentException : hostname cannot be null when trying to obtain AWS ECR Authentication Token 异常

当节点没有父级时,JavaFX CSS 类不会被删除

Java线程: Please clarify this understanding

java - 需要帮助才能使 Spring MVC 项目与 IntelliJ IDEA 一起使用

java - 如何避免超过工作表上允许的最大行数 jxl 中的异常

java - JXL - 多张纸上的垂直和水平卡住

java - 我们可以根据特定列值以编程方式在 Excel 工作表中按字母顺序对条目进行排序吗