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

时间:2012-04-02 19:02:22

标签: java exception jxl

我正在开发一个java应用程序,我正在使用JXL库。 所以我试过这个:

File f = new File("test.xls");
ArrayList<String[]> ins = new ArrayList<String[]>();
        for(int i=0;i<20;i++){
           ins.add(new String[]{"-------"+i+"-------", "-------"+i+"-------", "-------"+i+"-------", i,"-------"+i+"-------", "-------"+i+"-------", "-------"+i+"-------","-------"+i+"-------", "-------"+i+"-------", "-------"+i+"-------", "-------"+i+"-------", "-------"+i+"-------", "-------"+i+"-------", "-------"+i+"-------"}); // JUST FOR EXAMPLE
        }
        WritableWorkbook workbook = Workbook.createWorkbook(f);

            WritableSheet sheet = workbook.createSheet("TEST1", 0);
            String[] headers = new String[]{"HEADER1", "HEADER2", "HEADER3", "HEADER4", "HEADER5", "HEADER6", "HEADER7", "HEADER8", "HEADER9", "HEADER10", "HEADER12"};
            for(int i=0;i<headers.length;i++){
               sheet.addCell(new Label(i, 0, headers[i]));
            }
            for(int i=0;i<ins.size();i++){
               String tmp[] = ins.get(i);
               for(int j=0;j<tmp.length;i++){
                  sheet.addCell(new Label(j,i+1,tmp[j].toString()));
               }
            }
            workbook.write();
            workbook.close();
    }

当我启动它时,我会检索:

Exception in thread "main" 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 Pr1.main(Pr1.java:52)
Java Result: 1

我该如何解决?有可能我不能添加21行?这很奇怪......

2 个答案:

答案 0 :(得分:2)

我开始使用JXL库并寻找一些解决此类错误的解决方案,您在帖子标题中指出,我采取的解决方案是21行。

您有以下代码:

            for (int j = 0; j <tmp.length; i++) {
               sheet.addCell (new Label (j, i +1, tmp [j].toString ()));
            }

应该是:

            for (int j = 0; j <tmp.length; j++) {
               sheet.addCell (new Label (j, i +1, tmp [j].toString ()));
            }

有什么区别?好吧,你增加了i而不是j,所以第二个循环永远不会结束。

我希望我帮助解决了你的问题。

祝你好运。

答案 1 :(得分:0)

尝试使用Apache POI library。最好使用。