Ajuda com Jakarta POI: Contar registros de planilha .xls

5 respostas
Sansalone

Olá pessoal! Estou desenvolvendo um aplicativo que manipula arquivos .xls e estou com um problema que está me tirando o sono:

Eu preciso contar quantos registros tem na planilha, mas se eu apagar uma linha, ela vai continuar sendo contada.

Alguém sabe o que posso fazer?

Obrigado!

5 Respostas

Sansalone

Alguém pode me ajudar?

lemosmoises

Olha, eu não pesquisei no javadoc da API se tem algum método que retorna isso.
Então eu faria assim:

Instanciar um arquivo do excel:
Classe --> HSSFWorkbook

Obter uma planilha:
Classe --> HSSFSheet

Tenta obter a linha atraves do método abaixo
Acredito que se getRow() devolver null a linha
não tem nenhum valor preenchido

Se não devolver null você pega a célula, se a celula
devolver null não está preenchida
Vai ser necessário fazer um laço “for” ou “while” para verificar todas as linhas. Mas acho que basicamente é isso.

HSSRow linhaExcel = planilha.getRow( numeroLinha ); HSSFCell celula = linhaExcel.getCell( numeroColuna );

Sansalone

Hum entendi, vou tentar isso. Obrigado!

G

fiz isso que vc ta querendo da seguinte forma:

private int inserirFuncaoCountA(HSSFSheet sheet, int indexLinha, HSSFCellStyle style, int primeiraCelula, int ultimaCelula, String titulo) {
		indexLinha++;
		HSSFCell cell;
		cell = sheet.createRow(indexLinha).createCell((short) 1);
		cell.setCellValue(new HSSFRichTextString(titulo) );
		cell.setCellStyle(style);
		sheet.autoSizeColumn((short)(2));
		cell = sheet.createRow(indexLinha).createCell((short) 2);
		cell.setCellFormula("countA(C"+(primeiraCelula+1)+":C"+(ultimaCelula+1)+")");
		cell.setCellStyle(style);
		indexLinha++;
		return indexLinha;
	}

sacou? explico:
o próprio excel tem função para validar isso que vc quer, no caso usei a função countA informando início e fim para validar a quantidade de células que estavam preenchidas.

Sansalone

Não entendi muito bem como usar essa função, pode me dar um exemplo de uso?

Criado 14 de junho de 2012
Ultima resposta 15 de jun. de 2012
Respostas 5
Participantes 3