2015-11-30 3 views
2

Я использую Jasper Reports 6.0.1 с Jaspersoft Studio.Jasper Reports - Разбор двойных значений от JSON

У меня есть отчет с подзаголовком. В соответствующем отчете подчиняется набор данных из основного отчета со значениями: - строка - double

У меня проблемы с правильным отображением двойных значений в отчете. Так Json содержит значение, как:

'doubleValue': '0.431'

поля 'doubleValue' корректно определен в подотчете:

<field name="doubleValue" class="java.lang.Double"> 
    <fieldDescription><![CDATA[doubleValue]]></fieldDescription> 
</field> 

И 'doubleValue' кажется правильно используется в докладе:

<textField pattern="#0.00"> 
       <reportElement x="690" y="0" width="75" height="30" uuid="d265ebec-6fa7-421e-8d58-c7f2d32eea6b"> 
        <property name="com.jaspersoft.studio.unit.width" value="px"/> 
       </reportElement> 
       <box> 
        <topPen lineWidth="0.1"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement> 
        <font size="9"/> 
       </textElement> 
       <textFieldExpression><![CDATA[$F{doubleValue}]]></textFieldExpression> 
      </textField> 

doubleValue, кажется, правильно отформатированные на выходе: «3,00»

НО: источник значения поля был 3.41. Итак, я глубоко изучил значения, и все значения отформатированы как «x.00», независимо от того, что находится за разделителем десятичной дроби.

Пожалуйста, помогите мне, что я делаю неправильно?

мне нужны данные правильно экспортируемые в XLSX (так что знает, что это число в клетке), и я использую следующий вариант для этого:

<property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/> 
+0

Я попробовал вы образец экспорта в excel, и у меня нет проблем с ним (отчет jasper v6). ПРИМЕЧАНИЕ Кроме того, в excel реальное значение находится в ячейке (следовательно, es, 3.414545 и только формат в excel установлен для отображения 2 числа (персонализированный формат # .00) –

ответ

2

Эти проблемы часто происходит, когда десятичные изменения разделителей на основе локализации es. . (точка) является десятичным разделителем в США, но в Италии десятичный разделитель равен (запятая)

Однако отчет о яшме (v 6) должен справиться с этим без проблем, ваш шаблон должен быть в формате США, а отчет яшмы будет экспортироваться в формате Locale.getDefault() (также применяя правильный шаблон в excel).

Так должно быть ничего плохого с jrxml.

Однако обратите внимание, что JsonDataSource будет использовать формат Locale.getDefault(), поэтому, если у вас есть итальянский локальный номер Double. 12.234 будет интерпретироваться до 12234 (отсюда и тысячи).

В этом случае вам необходимо установить Local на JsonDataSource es.

JsonDataSource ds = new JsonDataSource(new File("example.json")); 
ds.setLocale(Locale.US); 

Правильно разобрать ваши номера.

+0

Просто чтобы добавить к вашему ответу ... У меня был сценарий где у меня был JSON в США, и я хотел использовать его в подзаголовке, который работал в JVM с локалью pt-BR.Я не мог найти способ создания 'JsonDataSource' и установить локаль, как вы упомянули, чтобы передать ее в дополнительный отчет. Тем не менее, * * можно передать JSON в качестве входного потока через параметр JSON_INPUT_STREAM и установить локаль через параметр JSON_LOCALE. – Andre

Смежные вопросы