Andei pesquisando e vi que muita gente tem o mesmo problema que eu, mas nao consegui encontrar solução, então se alguém souber como ajudar, ficarei muito grata.
O problema é o seguinte:
Obrigatoriamente tenho que usar o POI para gerar o excel da minha app, e os templates do excel já estao prontos, e nao posso modificá-los, pois são usados por outras aplicações também.
Portanto qualquer formatação e coisas do genero devem ser feitas pelo POI.
Até aí tudo bem, tenho 3 condições onde o símbolo de moeda pode ser $, £ ou ?
O problema é o Euro, já tentei de todas as maneiras e todos os tipos de codificação e o excel nao mostra o simbolo como ?, mostra Ç, ¬ entre outros.
Se alguém souber a resposta, por favor me responda
Fiz um exemplinho simples e testei no Calc do OpenOffice com sucesso. Creio que não vá apresentar complicação no excel.
Estou postando todo o código de criação para aqueles que tenham curiosidade sobre o POI. :wink:
//Criação da pasta de trabalho (Não sei o nome técnico rsrs).HSSFWorkbookwb=newHSSFWorkbook();//criação da planilha.HSSFSheetsheet=wb.createSheet("Minha planilha");//Criação da linha.HSSFRowrow=sheet.createRow(0);//Atribuição de valor a linha.//Caractere unicode referente ao euro concatenada com uma string comum.row.createCell(0).setCellValue('\u20AC'+" 0.00");//Criação do arquivo no local especificado.FileOutputStreamstream=newFileOutputStream("/home/myUser/Desktop/planilha.xls");wb.write(stream);
Espero que ajude.
Abraços
[EDIT]Pelo que percebi você precisa que o próprio excel gere o caractere quando for digitado somente o valor. É isso?
jLady
Olá Eric,
Seria isso mesmo que voce escreveu, porém \u20ac quando vai pro excel aparece “¬”
Achei que poderia ser alguma zica da minha maquina, mas em uat também acontece as mesmas coisas, ja tentei unicode, ascii, colocar direto “?”…
Nada funciona com excel… no console ele imprime o valor certo, e pelo seu teste, no OpenOffice também…
Já não sei mais o que tentar…
Muitissimo grata pela ajuda, se tiver mais alguma ideia, ficarei muito feliz
C
coruja182
Depois de todo esse tempo… você descobriu a resposta?
Estou enfrentando o mesmo problema.
jLady
ainda nao descobri o que é…
estou tentando de tudo…
e o pior que tenho prazo pra entregar isso funcionando…
=/
estou aberta a sugestoes
Eric_Yuzo
Engraçado, testei no excel 2003 e funcionou. Tanto com o código que postei como utilizando DataFormat. Estou usando o Apache POI 3.6.
Já tentaram usar \u0080?
jLady
é estranho mesmo isso… aqui em vez do simbolo de euro, aparece um quadradinho…
=/
Eric_Yuzo
Fucei um pouco e consegui setando o charset como symbol:
E utilizando ‘\u0080’ para representar o caractere:
Espero que desta forma funcione. hehe
jLady
Olá Eric,
Não consegui usar esse metodo setCharSet…
Encontrei na API, mas nao consigo usar.
Tem alguma coisa diferente a ser feita para que funcione?
M
marcos.c
Olá JLady!
Tudo bom? Eu fiz uns testes aqui e consegui imprimir o simbolo de euro em uma planilha com o POI
No poi que usei aqui, o metodo .setCellValue(String value) esta depreciado.
Isso já não é um bom sinal, procurem usar métodos não depreciados, como o .setCellValue(HSSFRichTextString value).
Usando o HSSFRichTextString foi possivel colocar o simbolo de euro como simbolo na string, assim não precisa se matar procurando o valor dele na tabela ASCII, UTF e sei la mais qual!
rsrsrs!
Bjus lady! tem msn?? manda por pm pra mim!
=D
Tem namorado??
Ps.: Eu anexei um arquivo com uma classe em txt para testar, é só colar em um projeto netbeans, ou eclipse, mudar o path e adicionar a biblioteca do POI.
publicclassMain{/** * @param args the command line arguments */publicstaticvoidmain(String[]args){doubled=132.32;TestePOIpoi=newTestePOI(d);}/** * * @author Administrador */publicstaticclassTestePOI{doublevarTest=0;publicTestePOI(doublevalor){this.varTest=valor;criaCarregaSheet(varTest);}privatevoidcriaCarregaSheet(doublevarTest){HSSFWorkbookwb=newHSSFWorkbook();HSSFSheetsheet=wb.createSheet("planTest");HSSFRowrow=sheet.createRow(0);//No post esta aparecendo interrogação, mas é o simbolo de Euro!HSSFRichTextStringstrng=newHSSFRichTextString("? "+varTest);row.createCell(0).setCellValue(strng);FileOutputStreamfos=null;try{fos=newFileOutputStream("C:\\plan.xls");}catch(FileNotFoundExceptionex){Logger.getLogger(TestePOI.class.getName()).log(Level.SEVERE,null,ex);}try{wb.write(fos);}catch(IOExceptionex){Logger.getLogger(TestePOI.class.getName()).log(Level.SEVERE,null,ex);}}}}
Eric_Yuzo
jLady:
Olá Eric,
Não consegui usar esse metodo setCharSet…
Encontrei na API, mas nao consigo usar.
Tem alguma coisa diferente a ser feita para que funcione?
O método setCharSet é da classe HSSFFont, que eu chamei a partir do retorno do método getFontAt da classe HSSFWorkbook.
O problema foi para chamar o método ou para visualizar o caractere?
jLady
Creio que meu problema seja a versão do POI…
aqui a versão é antiga…
entao esses métodos nem existem na classe Font
assim como o exemplo que o marcos deu também não funciona pois os métodos nao aceitam HSSFRichTextString…
eu vou tentar atualizar o POI aqui e ver no que dá…
qualquer novidade posto aqui, e se alguem tiver ideias melhores…
ainda estou aberta a sugestoes…
ivesbertoli
Alguem já usou POI com Word ???
Estou tentando substituir alguns trechos do arquivo e salvar com outro nome, só que não consigo !!!
Ele duplica tudo !!!