Bom dia a todos.
Bom, desde ontem eu estou tentando, mas não estou encontrando a solução.
É o seguinte:
// Crio uma planilhaHSSFSheetsheet=workbook.createSheet();// Crio uma linha na planilhaHSSFRowrow=sheet.createRow(0);// Crio a célula 0HSSFCellcell=row.createCell((short)0);cell.setCellType(HSSFCell.CELL_TYPE_FORMULA);cell.setCellFormula("(6+5)");// QUERO O RESULTADO DA FORMULA
Então, eu seto a fórmula na célula.
ele não dah nenhum erro, seta normalmente. Mas eu preciso que me retorne o valor. Só que eu não encontrei nenhum método GET ou outro qualquer que me retorna o resultado.
Acho que o POI não é um Excel completo, no sentido em que ele efetue os cálculos também. É só para criar ou obter dados de uma planilha.
(Se você precisa de um Excel completo e não pode pagar a licença, instale o OpenOffice e use o SDK do OpenOffice, que se não me engano tem interface Java também.)
Aqui não fala nada de recálculos etc. Então se você seta uma fórmula (uma string), só dá para recuperar uma fórmula (uma string), não o seu valor calculado.
F
fabiozoroastro
Thingol, vlws pela ajuda.
=]
Tipo, eu preciso que realmente que eu obtenha o resultado da fórmula, sem gerar um arquivo xls.
Vc sabe se o JExcel, faz isso?
Abraços.
T
thingol
Parece que o POI tem classes para calcular o resultado de fórmulas.
Thingol. Muito obrigado.
=]
Vou testar aqui, mas parece que vai funcionar. Mais tarde eu posto aqui dizendo se deu certo ou não…
Vlws mais uma vez.
F
fabiozoroastro
Opa…
Obrigado pela ajuda de tdos então.
Eu consegui fazer aqui.
Stringtexto="(4+5)";HSSFWorkbookworkbook=newHSSFWorkbook();// Crio uma planilhaHSSFSheetsheet=workbook.createSheet("nomePlanilha");CellReferencecellReference=newCellReference("A1");// Crio uma linha na planilhaHSSFRowrow=sheet.createRow(cellReference.getRow());// Crio a célula 0HSSFCellcell=row.createCell(cellReference.getCol());cell.setCellType(HSSFCell.CELL_TYPE_FORMULA);cell.setCellFormula(texto);HSSFFormulaEvaluatorevaluator=newHSSFFormulaEvaluator(sheet,workbook);// suppose your formula is in B3try{evaluator.setCurrentRow(row);HSSFFormulaEvaluator.CellValuecellValue=evaluator.evaluate(cell);System.out.println(cellValue.getNumberValue());
Se alguém quiser saber como foi… Taí…
Abraços.
T
thingol
É claro que se o OP (Original Poster) quer apenas calcular uma fórmula o melhor seria ter seguido a sugestão do “hashcode”, que é usar o BeanShell.
(Se alguém olhar seu programa e descobrir que você cria uma planilha em memória só para calcular 4 + 5 vai lhe dar um esculacho daqueles )
F
fabiozoroastro
Eu sei.
Mas eu coloquei aí desta forma, só pra mostrar como faz pra usar o HSSFFormula…
no meu caso aqui é mais complicado.
=]
Obrigado.