在java中使用apache生成.xls文件时,我得到了空指针异常。
同样的代码在“英语语言”中运行良好,但是它给了我一个空指针,同时我试图用“法语”语言生成它。
一些列具有空值,但我在创建单元格时处理这些空数据和空单元格。
在尝试写入输出详细信息时获取空指针
ClassExcel.write(Out);
下面是我在DTO中保存的所有数据之后用于xls生成的方法。
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 java.lang.NullPointerException
14:43:09,037 org.apache.poi.util.StringUtil.putCompressedUnicode(StringUtil.java:193)错误stderr
14:43:09,037 org.apache.poi.hssf.record.BoundSheetRecord.serialize(BoundSheetRecord.java:281)错误stderr
14:43:09,037 org.apache.poi.hssf.model.Workbook.serialize(Workbook.java:732)错误stderr
14:43:09,037 org.apache.poi.hssf.usermodel.HSSFWorkbook.getBytes(HSSFWorkbook.java:786)错误stderr
14:43:09,037 org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:732)错误stderr
如果有人有任何想法,请帮助我。
发布于 2018-11-26 10:46:22
我能够解决上面的空指针异常。
问题的根本原因。
在使用法语创建每个选项卡时,我传递的是包含超过31个字符的标签名的keyValue。但是,Apache允许少于31个字符的(Exception--------------java.lang.IllegalArgumentException:工作表名不能为空白、大于31个字符或包含任何/*?[],并且由于该空白(空)工作表名,在编写工作簿时发生了该空指针异常。
<i> [BOUNDSHEET]
.bof = 0
.optionflags = 0
.sheetname length= 0
.unicodeflag = 0
.sheetname = null
</i>因此,避免使用少于31章的工作表名称,并且工作表名称不应包含任何/*?[]特殊字符。
https://stackoverflow.com/questions/53476826
复制相似问题