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!!!