Получение исключения нулевого указателя при попытке создать 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 устава, и имя листа не должно содержать никаких специальных символов /*?[].