2016-05-18 2 views
1

Я пытаюсь преобразовать английские номера в бенгальские числа перед заполнением отчета. Данные я получаю от MySQL:Преобразование чисел в локальные (UTF8) Бенгальские числа в JasperReports & MySQL

SELECT brand.id,brand.brand,model.model FROM brand INNER JOIN model ON brand.id=model.id AND model.id=$P{ID} 

Например, если model.model столбцы возвращают число 322, то он должен сначала преобразовать номер версии бенгальский (3২২), а затем она заполнит report.Something, как это :

Первый | два | Три 1 | ২ | 3

Здесь в бенгальский 0-9:

0 1 ২ 3 4 5 6 7 8 9

Я думал о замене метод следующим образом:

char[] en ={'0','1','2','3','4','5','6','7','8','9'}; 
char[] bn ={'০','১','২','৩','৪','৫','৬','৭','৮','৯'}; 
en.replace(bn) 

Возможно, это не будет работать!

Я просто не знаю с чего начать! Но вот мои текущие коды Применение:

Java-код:

@FXML 
public TextField one; 

public void click(ActionEvent event) throws JRException, SQLException, ClassNotFoundException, IllegalAccessException, UnsupportedLookAndFeelException, InstantiationException { 
    String reportSrcFile = "/home/sample/learn.jrxml"; 

    JasperReport jasperReport1 = JasperCompileManager.compileReport(reportSrcFile); 

    Connection conn = SqliConnect.getMySQLConnection(); 
    int two = Integer.parseInt(one.getText()); 
    Map<String, Object> parameters = new HashMap<String, Object>(); 
    parameters.put("ID",one.getText()); 

    JasperPrint print = JasperFillManager.fillReport(jasperReport1, 
      parameters, conn); 

    JasperViewer jv = new JasperViewer(print); 
    jv.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jv.setTitle("Test Report"); 

    jv.setVisible(true); 
} 

шаблон Доклада:

<subDataset name="Dataset1" uuid="2691431f-5c6f-403f-94cc-829c17ef1636"> 
    <property name="com.jaspersoft.studio.data.sql.tables" value=""/> 
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Learn"/> 
    <parameter name="ID" class="java.lang.Integer"> 
     <parameterDescription><![CDATA[Get ID]]></parameterDescription> 
     <defaultValueExpression><![CDATA[$P{ID}]]></defaultValueExpression> 
    </parameter> 
    <queryString> 
     <![CDATA[SELECT brand.id,brand.brand,model.model FROM brand INNER JOIN model ON brand.id=model.id WHERE model.id=$P{ID}]]> 
    </queryString> 
    <field name="id" class="java.lang.Integer"/> 
    <field name="brand" class="java.lang.String"/> 
    <field name="model" class="java.lang.String"/> 
</subDataset> 
<parameter name="ID" class="java.lang.Integer" isForPrompting="false"> 
    <parameterDescription><![CDATA[]]></parameterDescription> 
    <defaultValueExpression><![CDATA[$P{ID}]]></defaultValueExpression> 
</parameter> 
<queryString> 
    <![CDATA[SELECT brand.id,brand.brand,model.model FROM brand INNER JOIN model ON brand.id=model.id WHERE model.id=$P{ID}]]> 
</queryString> 
<field name="id" class="java.lang.Integer"/> 
<field name="brand" class="java.lang.String"/> 
<field name="model" class="java.lang.String"/> 
<title> 
    <band height="79" splitType="Stretch"> 
     <textField> 
      <reportElement x="11" y="16" width="100" height="30" uuid="d1485589-a4cf-4ab9-b896-0ef480beced4"/> 
      <textFieldExpression><![CDATA[$P{ID}]]></textFieldExpression> 
     </textField> 
    </band> 
</title> 
<detail> 
    <band height="250" splitType="Stretch"> 
     <componentElement> 
      <reportElement x="0" y="0" width="555" height="250" uuid="e199bd58-8408-4711-85d5-ba76db9691b7"> 
       <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/> 
       <property name="com.jaspersoft.studio.table.style.table_header" value="Table_TH"/> 
       <property name="com.jaspersoft.studio.table.style.column_header" value="Table_CH"/> 
       <property name="com.jaspersoft.studio.table.style.detail" value="Table_TD"/> 
       <property name="com.jaspersoft.studio.components.autoresize.proportional" value="true"/> 
      </reportElement> 
      <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"> 
       <datasetRun subDataset="Dataset1" uuid="fbb4dafa-4284-4118-9d2b-46d88c63a31b"> 
        <datasetParameter name="ID"> 
         <datasetParameterExpression><![CDATA[$P{ID}]]></datasetParameterExpression> 
        </datasetParameter> 
        <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
       </datasetRun> 
       <jr:column width="185" uuid="9a6b765f-b6d4-4753-909e-dd091b296654"> 
        <jr:columnHeader style="Table_CH" height="30"> 
         <staticText> 
          <reportElement x="0" y="0" width="185" height="30" uuid="7e644d1c-a893-49df-a18a-bf788eb6b92a"/> 
          <text><![CDATA[id]]></text> 
         </staticText> 
        </jr:columnHeader> 
        <jr:columnFooter style="Table_CH" height="30"/> 
        <jr:detailCell style="Table_TD" height="30"> 
         <textField> 
          <reportElement x="0" y="0" width="185" height="30" uuid="848a53bf-2b2e-46df-a7aa-26fc0b897c85"/> 
          <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression> 
         </textField> 
        </jr:detailCell> 
       </jr:column> 
       <jr:column width="185" uuid="514580a5-f09c-43d1-952e-d4769c2e4686"> 
        <jr:columnHeader style="Table_CH" height="30"> 
         <staticText> 
          <reportElement x="0" y="0" width="185" height="30" uuid="c01152e9-1547-472b-946e-92011c02bc94"/> 
          <text><![CDATA[brand]]></text> 
         </staticText> 
        </jr:columnHeader> 
        <jr:columnFooter style="Table_CH" height="30"/> 
        <jr:detailCell style="Table_TD" height="30"> 
         <textField> 
          <reportElement x="0" y="0" width="185" height="30" uuid="98c84ae5-b289-459a-b34b-a9becf43b9ce"/> 
          <textFieldExpression><![CDATA[$F{brand}]]></textFieldExpression> 
         </textField> 
        </jr:detailCell> 
       </jr:column> 
       <jr:column width="185" uuid="5c1d2026-45bc-4ec8-8be4-c444e47d093d"> 
        <jr:columnHeader style="Table_CH" height="30"> 
         <staticText> 
          <reportElement x="0" y="0" width="185" height="30" uuid="81f76de4-a68b-41c3-a2e8-bbaa625b71be"/> 
          <text><![CDATA[model]]></text> 
         </staticText> 
        </jr:columnHeader> 
        <jr:columnFooter style="Table_CH" height="30"/> 
        <jr:detailCell style="Table_TD" height="30"> 
         <textField> 
          <reportElement x="0" y="0" width="185" height="30" uuid="d69c690e-05a4-453a-93ea-9061523975ad"/> 
          <textFieldExpression><![CDATA[$F{model}]]></textFieldExpression> 
         </textField> 
        </jr:detailCell> 
       </jr:column> 
      </jr:table> 
     </componentElement> 
    </band> 
</detail> 

Что такое правильный способ сделать это?

+1

Возможный дубликат [Лучший способ преобразовать английские цифры Арабский] (http://stackoverflow.com/questions/11469058/лучший путь к новообращенным-английский-числа-к-арабски). После написания кода Java вы можете использовать [scriptlet] (http://jasperreports.sourceforge.net/sample.reference/scriptlet/index.html#scriptlet) в отчете –

ответ

1

Вы также можете создать замену строки в коде Java и использовать его в карте параметров:

String replacedOne = one.getText().replaceAll("0","০").replaceAll("1","১").replaceAll("2","২").replaceAll("3","৩").replaceAll("4","৪").replaceAll("5","৫").replaceAll("6","৬").replaceAll("7","৭").replaceAll("8","৮").replaceAll("9","৯"); 
    parameters.put("replacedID",replacedOne); 

Или лучше, вы можете выполнить замену непосредственно в файле jrxml, без необходимости модифицировать Java-файл, с помощью этого (очень долго) выражение вместо $ F {модель}:

$F{model}.replaceAll("0","০").replaceAll("1","১").replaceAll("2","২").replaceAll("3","৩").replaceAll("4","৪").replaceAll("5","৫").replaceAll("6","৬").replaceAll("7","৭").replaceAll("8","৮").replaceAll("9","৯"); 
+0

Как бы вы это сделали, если столбец модели является типом Integer? – kodr

+0

String.valueOf ($ F {model}). ReplaceAll ("0", "0") ..... было бы выбором – shertage

+0

И гарантировать, что $ F {model} не является нулевым – shertage

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