Как избежать Превышено максимально допустимое количество строк на листе Исключение в jxl - PullRequest
1 голос
/ 02 апреля 2012

Я занимаюсь разработкой приложения на 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 ]

2 голосов
/ 16 августа 2012

Я начинаю с библиотеки 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, поэтому второй цикл никогда не заканчивается.

Я надеюсь, что помог решить вашу проблему.

Удачи.

0 голосов
/ 03 апреля 2012

попробуйте использовать Библиотека Apache POI . Лучше использовать.

...