Estou aprendendo a utilizar a API para manipular dados utilizando planilhas no excel.
Duvida que tenho é a seguinte
Supondo q eu tenha a formula C1 = A1 + B1
obs: eu coloquei a formula tanto via o java pra testar, quanto manualmente.
Ao setar os valores de a1 e b1 via a api e abrir o a planilha a mesma nao contém o valor de C1 atualizado.
Alguem sabe me dizer porque, ou se eu tenho que fazer algo em c1 tbm, olhei os métodos forneceidos pela Api e nao achei nenhum que “recalculasse” o valor da mesma, apesar que acho que isso deveria ser automatico no excel.
Desde já agradeço atenção.
[]'s
Fernando
Problema depois de alguns vários testes ocorre depois que eu abro o arquivo no microsoft office, pois ele automaticamente pega todas as funções e recalcula os resultados.
Mas ai surge outro problema:
Se eu crio tudo utilizando a api, funciona perfeitamente, mas nas colunas onde fórmulas são inseridas, eu não consigo obter o resultado do cálculo do mesmo (o valor da coluna).
Se eu insiro as fórmulas pelo office, a api não as identifica, como consequencia não atualiza o valor final se alterado alguma coluna que faça parte da fórmula.
Alguem sabe pq? ou alguma outra forma de trabalhar com planilhas do excel.
[]s
Fernando
Bom depois mais um tempo mexendo, consegui obter resultados desejados. Atento que depois de abrir o arquivo no microsoft office ele não sei o que acontece nao permite alterar, e fórmulas novas, deve ser adicionadas pelo java para evitar conflitos.
Posso depois ta disponibilizando algum tutorial pra quem tiver interesse. (e vo tentar descobrir o pq do erro dps q aberto no microsoft office).
[]s
Fernando
Alguns anos depois…
Atualmente tive o mesmo problema, em que na minha aplicação seria necessário inserir (formulas, números e texto) tanto manualmente, quanto via java.
A maneira que encontrei para resolver este problema foi que depois de alterar os valores com o java eu reescrevo o conteúdo de cada célula.
Um exemplo do que fiz
public static void main(String[] args) {
HSSFWorkbook w = null;
try {
w = new HSSFWorkbook(new FileInputStream("matriz.xls"));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("atualizando...");
for ( int i = 0 ; i < w.getNumberOfSheets(); i++) {
HSSFSheet s = w.getSheetAt(i);
for (int j = 0 ; j < 65536 ; j++) {
Row r = s.getRow(j);
if( r != null ){
for( int h = 0 ; h < 256 ; h++){
Cell a = r.getCell(h);
if( a != null){
if( a.getCellType() == Cell.CELL_TYPE_FORMULA )
a.setCellFormula( a.getCellFormula() );
}
}
}
}
}
try {
FileOutputStream fileOut = new FileOutputStream("matriz.xls");
w.write(fileOut);
fileOut.close();
System.out.println("atualizado!!!");
} catch (IOException e) {
e.printStackTrace();
}
}
espero ter ajudado