Получение исключения нулевого указателя при попытке создать xls на французском языке

Я получаю исключение нулевого указателя при создании файла.xls с использованием Apache POI в Java.

Тот же код прекрасно работает с "английским языком", но он дает мне нулевой указатель при попытке генерировать на "французском" языке.

Некоторые столбцы имеют нулевое значение, но я обрабатываю эти нулевые данные и пустую ячейку при создании ячейки

получить нулевой указатель при попытке записать детали

"ClassExcel.write(уходит)";

Ниже приведен метод, который я использую для генерации xls после всех данных, которые я хранил в DTO.

    public void ExcelGenerate(
    ClassExcelDTO classExcel,
    HttpServletResponse response,
    HttpServletRequest request) throws Exception {
    request.setCharacterEncoding("iso-8859-1");
    if( classExcel != null ){
            response.reset();
            response.setContentType("application/csv");
            response.setHeader("Content-disposition","attachment;filename=\"" + classExcel.getName + ".xls\"");
            try {
                if(null!=response && null!=response.getOutputStream()){
                OutputStream out = response.getOutputStream();

                if(null!=out)
                    try {
                        classExcel.write(out);
                    } catch (Exception e) {

                        e.printStackTrace();
                    }

                out.close();
                }
            } catch (SocketException sEx) {

            } catch (IOException io) {
            } catch (Exception e) {

            }
        } else {

        // Some code
        }
}

Ниже сгенерированное исключение: 14:43:09,037 ОШИБКА [stderr] (http-localhost/127.0.0.1:8080-4) java.lang.NullPointerException

14: 43: 09,037 ОШИБКА [stderr] (http-localhost/127.0.0.1:8080-4) в org.apache.poi.util.StringUtil.putCompressedUnicode (StringUtil.java:193)

14: 43: 09,037 ОШИБКА [stderr] (http-localhost/127.0.0.1:8080-4) в org.apache.poi.hssf.record.BoundSheetRecord.serialize (BoundSheetRecord.java:281)

14: 43: 09,037 ОШИБКА [stderr] (http-localhost/127.0.0.1:8080-4) в org.apache.poi.hssf.model.Workbook.serialize (Workbook.java:732)

14: 43: 09,037 ОШИБКА [stderr] (http-localhost/127.0.0.1:8080-4) в org.apache.poi.hssf.usermodel.HSSFWorkbook.getBytes (HSSFWorkbook.java:786)

14: 43: 09,037 ОШИБКА [stderr] (http-localhost/127.0.0.1:8080-4) в org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:732)

Пожалуйста, помогите мне, если у кого-нибудь есть идеи.

1 ответ

Решение

Я могу решить выше исключение нулевого указателя.

Основная причина проблемы.

При создании каждой вкладки с использованием французского языка я передавал keyValue имени вкладки, которое содержит более 31 символа. но для Apache POI допустимо менее 31 символа (Исключение -------------- java.lang.IllegalArgumentException: имя листа не может быть пустым, содержать более 31 символа или содержать любой из символов * *?[]) и из-за этого пустого (нулевого) имени листа возникла исключительная ситуация нулевого указателя при записи книги.

<i> [BOUNDSHEET]
     .bof             = 0
     .optionflags     = 0
     .sheetname length= 0
     .unicodeflag     = 0
     .sheetname       = null
</i>

поэтому избегайте названия листа, имеющего менее 31 устава, и имя листа не должно содержать никаких специальных символов /*?[].

Другие вопросы по тегам