[RESOLVIDO] Formatação de valor em iReport

Boa tarde pessoal.

Estou com um problema parecido com o do colega do link indicado.

Meu problema é o seguinte eu preciso que o valor que estou trabalhando seja formatado no valor de moeda do Brasil, ou seja '#.###.###,00".

Eu usei inicialmente a configuração de locale assim:
java.text.NumberFormat.getCurrencyInstance(new Locale("pt","br")).format($V{minhaVariavel}.doubleValue())

Porém desta forma ele sempre aparece o prefixo “R$” antes do valor, e o cliente quer apenas o valor.

Então eu tentei usar da seguinte forma:
(new DecimalFormat("#.###.##0,00")).format($V{minhaVariavel})

Mas ele só funciona se eu inverter o sinal de ponto por vírgula e vice-versa.
Desta forma apresenta esta mensagem de erro:
StandardWrapperValve[brlSpringDispatcher]: PWC1406: Servlet.service() for servlet brlSpringDispatcher threw exception
net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: (new DecimalFormat("#.###.##0,00")).format($V{minhaVariavel})

Algo como se ele reconhecesse o ponto como a separação de moeda sendo que não gostaria assim e não sei como fazer para mudar.

A principal observação neste caso é a questão que meus valores estão todos com BigDecimal.

Agradeço muito quem puder me indicar um caminho para a solução,
Obrigada.

Acredito que isso deva ajudar…

Então este tópico foi um dos primeiros que encontrei a respeito do assunto.
Mas como eu comentei, desta forma o valor fica ‘R$#.###.###,00’ e o cliente não aceitou pois ele quer apenas o valor ‘#.###.###,00’

E é aqui eu eu travei… pois se as informações estivesse em Double estaria resolvido, mas estão todas em BigDecimal, e nenhuma formatação parece se encaixar.

E porque tu nao usa aqueles campos de expressao … e formata o valor da field na mao mesmo… como você faria em qualquer codigo java?

O iReport permite isso … numa boa.

Exemplos em Java:

public static void main(String... args) {
   BigDecimal bd = new BigDecimal("1015.14");
   DecimalFormat df = new DecimalFormat("#,##0.00");
   System.out.println(df.format(bd.doubleValue()));
}

Exemplo num campo de expressao do iReport:

new DecimalFormat("#,##0.00").format($F{MINHA_FIELD_BIG_DECIMAL}.doubleValue())

Abs

Porque ele só aceita no formato invertido da virgula e do ponto.
Assim: "#,##0.00"
Ao invés de assim: “#.##0,00”

Já tentei também.

Na hora de gerar o relatório ele da o erro que comentei no tópico…

Cara… a mascara de currency é daquela forma mesmo … “#,##0.00”

O que vai determinar de fato como vai ficar, é o Locale de onde está sendo rodado a aplicação.

Verifique se seu Locale está p/ pt-BR

eu ja fiz isso antes de abrir o tópico, apliquei locale pra pt-BR, mas quando faço isso ele coloca o “R$” e é justamente o “R$” q eu não quero que fique, ele fica com a mascara certa mas tbm fica com o “R$”

pode ver no primeiro texto la tem um trecho de código q coloquei q a mascara ficou correta mas ficou com o “R$” e eu preciso so dos valores.
Esta nos requisitos do cliente.

Todos estes exemplos eu tentei, pesquisei e sempre cheguei a isso… mas continuo na mesma.

Jah tentasse meter um valor.replace(“R$”, “”); ?

Oi @guivirtuoso com .replace() funcionou. acho q é isso mesmo.
deu certo em todos os campos.

Não tinha pensado nisso, obrigada!

1 curtida

Consegui com a forma completa que tem o R$. Obrigado

Olá amigo. Para formatar em valor moeda vc deve colocar esse parametro no textFiel do seu arquivo .jrxml: pattern=“¤ #,##0.00”

Flw

1 curtida