Ou é BUG do POI ou não sei HELP!

3 respostas
ncm

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();
		}
	}

3 Respostas

ncm

Nenhuma resposta?
Só olhadinhas?

:cry: :cry: :cry:

alberto_ribeiro

Bom dia, olha só eu sempre utilizo isso e costumo fazer assim:

for(int k = 0; k < 8; k++) // iniciando do 0
            	sheet.autoSizeColumn((short)k);

nunca aconteceu isso comigo também…

ncm

é alberto_ribeiro…

eu já tentei isso antes e dá no mesmo.

Mas valeu pela colaboração…

Criado 6 de novembro de 2009
Ultima resposta 6 de nov. de 2009
Respostas 3
Participantes 2