Converter célula para número dataExporter Primefaces

0 respostas
primefacesjsfjava
M

Bom dia!

Sou iniciante em programação. Tentei ajuda no stackoverflow, acho que me responderam certo, o problema é que eu não estou conseguindo implementar a solução, creio que por pouca habilidade com programação ainda…

Meu problema é que tenho um dataExporter que transforma informações de uma coluna para XLS (excel, calc e talz). Mas pelo o que eu li, o dataExporter do primefaces transforma tudo em texto, e eu gostaria que as células que contêm números fossem convertidas para inteiros. Com diversas ajudas cheguei nesse PostProcessXLS (parte do código está comentado pq estou testando)

public void postProcessXLS(Object document) {
	HSSFWorkbook book = (HSSFWorkbook) document;
	HSSFSheet sheet = book.getSheetAt(0);
	HSSFRow header = sheet.getRow(0);

	// Quantidade de colunas na planilha
	int colCount = header.getPhysicalNumberOfCells();
	// Quantidade de linhas na planilha
	int rowCount = sheet.getPhysicalNumberOfRows();

	// Pega o formato de número de decimal
	HSSFCellStyle decimal = book.createCellStyle();
	decimal.setDataFormat((short) 2);

	// Percorre as linhas da planilha
	for(int rowInd = 1; rowInd < rowCount; rowInd++) {
		HSSFRow row = sheet.getRow(rowInd);
		// Percorre as colunas da linha
		for(int cellInd = 1; cellInd < colCount; cellInd++) {
			// Pega a célula
			HSSFCell cell = row.getCell(cellInd);

			// Pega o conteúdo da célula
			String strVal = cell.getStringCellValue();

			if(strVal.matches("^\\d{0,}")){

				cell.setCellStyle(HSSFCellStyle.);

				cell.setCellType(HSSFCell.CELL_TYPE_BLANK);
				cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);

				int intVal = Integer.valueOf(strVal);
				cell.setCellValue(intVal);
				/*
				cell.setCellStyle(decimal);

				int intVal = Integer.valueOf(strVal);

				cell.setCellValue(intVal);
				*/
			}

Só que não tá funcionando! No stackoverflow postaram uma solução, só que eu não sei implementar esse troço! Alguém pode me ajudar por favor? Não sei onde estou errando.Solução do stack:

public void ppMethod(Object document) {   
Workbook workbook = (Workbook) document;
...
CellStyle totalCellStyle = workbook.createCellStyle(); 

totalCellStyle.setDataFormat(workbook.createDataFormat().getFormat("#,##0.00"));

Cell currentCell = workbook.getSheetAt(0).getRow(0).getCell(0);


currentCell.setCellValue(Double.parseDouble(currentCell.getStringCellValue()));
currentCell.setCellStyle(defaultCellStyle);
...

}

Obrigado!!!

Criado 25 de novembro de 2019
Respostas 0
Participantes 1