Galera é o seguinte
tenho uma classe que cria documentos de excel via nossa velha e cordial amiga framework POI.
Até hoje nunca tinha tido esse tipo de problema e o sênior daqui (do trampo), disse que também não.
Então…
Crio uma planilha comum com mais de 400 linhas, e quando chamo o método autoSizeColumn() da sheet,
recebo um NULLPOINTEREXCEPTION no log.
Não entendi nada, ai fui debbugar, e vi que consigo pegar o tamanho da coluna, vi que todas as linhas foram geradas corretamente, vi que o objeto sheet em nehum momento fica nulo.
Bem preciso de opiniões serias.
Obrigado
Esse é o método que dá a exceção:
private static void createSheetDetail(String name,
Collection<GroupIndexOneDetailVO> values, HSSFWorkbook wb, HSSFCellStyle labelStyle, HSSFCellStyle stringCellStyle, HSSFCellStyle headerCellStyle, boolean isMargin){
HSSFSheet sheet;
HSSFRow row;
HSSFCell cell;
HSSFCellStyle contentCellStyle;
try{
sheet = wb.createSheet(name);
int rownum = 0;
rownum++;
for(GroupIndexOneDetailVO value : values) {
if("0".equals(value.getTotalizingLine())){
contentCellStyle = stringCellStyle;
}else{
rownum++;
row = sheet.createRow(rownum);
cell = row.createCell(1);
cell.setCellStyle(labelStyle);
if(!"2".equals(value.getYearType())){
cell.setCellValue(new HSSFRichTextString("Ano Realizado"));
}else{
cell.setCellValue(new HSSFRichTextString("Ano Planejado"));
}
row = null;
rownum++;
row = sheet.createRow(rownum);
createRowHeaderDetail(labelStyle, row, "1".equals(value.getYearType()), isMargin);
row = null;
rownum++;
contentCellStyle = headerCellStyle;
}
row = sheet.createRow(rownum);
createRowValueDetail(row, contentCellStyle, value, "1".equals(value.getYearType()), isMargin);
contentCellStyle = null;
row = null;
rownum++;
}
for(int i = 1; i < 30; i++){
sheet.autoSizeColumn((short) i); // <<-- Aqui gera a exceção logo quando o i ainda é igual a 0.
}
sheet = null;
}catch (Exception e) {
e.printStackTrace();
}
}