如何使用不同类型的度量来格式化交叉表单元格中的数据

拉蒂·饶

关于使用交叉表,是否有办法向度量添加任何格式?

我有如下数据。

在此处输入图片说明

我需要根据为任何地理位置指定的格式显示col2,col4。例如,在印度,我们将日期显示为11/11/1986,将数字显示为1,00,000。另一个国家/地区可能会显示数据为11.11.1986,数字为1.00.000

我该如何实现?

另外,在创建交叉表时,我没有向交叉表添加任何计算函数,但是,它在行组和列组的组合中占据了最大值。为什么是这样?这是相同的图片

在此处输入图片说明

和jrxml一样,如下

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="crosstabmeasure" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e47b3f7d-1e00-4702-a900-be50a229f085">
    <style name="Crosstab_CH" mode="Opaque" backcolor="#F0F8FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Crosstab_CG" mode="Opaque" backcolor="#BFE1FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Crosstab_CT" mode="Opaque" backcolor="#005FB3">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Crosstab_CD" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <parameter name="Locale" class="java.lang.String">
        <defaultValueExpression><![CDATA["en-IN"]]></defaultValueExpression>
    </parameter>
    <queryString>
        <![CDATA[select * from internatioinlization]]>
    </queryString>
    <field name="col1" class="java.lang.String"/>
    <field name="col2" class="java.lang.Integer"/>
    <field name="col3" class="java.sql.Timestamp"/>
    <field name="col4" class="java.lang.String"/>
    <summary>
        <band height="211" splitType="Stretch">
            <crosstab>
                <reportElement x="0" y="0" width="555" height="211" uuid="6c5ccb8a-50fc-4158-b2ba-88d864aa1e43"/>
                <rowGroup name="col11" width="60">
                    <bucket class="java.lang.String">
                        <bucketExpression><![CDATA[$F{col1}]]></bucketExpression>
                    </bucket>
                    <crosstabRowHeader>
                        <cellContents mode="Opaque" style="Crosstab_CH">
                            <textField>
                                <reportElement x="0" y="0" width="60" height="20" uuid="86c09a7f-46b5-4d2f-ba87-715f99d832a8"/>
                                <textFieldExpression><![CDATA[$V{col11}]]></textFieldExpression>
                            </textField>
                        </cellContents>
                    </crosstabRowHeader>
                    <crosstabTotalRowHeader>
                        <cellContents>
                            <staticText>
                                <reportElement x="0" y="0" width="-2147483648" height="-2147483648" uuid="94fca0ea-1572-4d42-85d9-b06f92c73b6e"/>
                                <text><![CDATA[Total col11]]></text>
                            </staticText>
                        </cellContents>
                    </crosstabTotalRowHeader>
                </rowGroup>
                <columnGroup name="col41" height="20">
                    <bucket class="java.lang.String">
                        <bucketExpression><![CDATA[$F{col4}]]></bucketExpression>
                    </bucket>
                    <crosstabColumnHeader>
                        <cellContents mode="Opaque" style="Crosstab_CH">
                            <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
                            <textField>
                                <reportElement x="0" y="0" width="120" height="20" uuid="137ef406-6a2e-4629-9d38-4858c4a5ae2c">
                                    <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
                                </reportElement>
                                <textFieldExpression><![CDATA[$V{col41}]]></textFieldExpression>
                            </textField>
                        </cellContents>
                    </crosstabColumnHeader>
                    <crosstabTotalColumnHeader>
                        <cellContents>
                            <staticText>
                                <reportElement x="0" y="0" width="-2147483648" height="-2147483648" uuid="5c71211d-f1db-4911-8923-2bdb208ddb99"/>
                                <text><![CDATA[Total col41]]></text>
                            </staticText>
                        </cellContents>
                    </crosstabTotalColumnHeader>
                </columnGroup>
                <measure name="col2_MEASURE1" class="java.lang.Integer">
                    <measureExpression><![CDATA[$F{col2}]]></measureExpression>
                </measure>
                <measure name="col3_MEASURE1" class="java.sql.Timestamp">
                    <measureExpression><![CDATA[$F{col3}]]></measureExpression>
                </measure>
                <crosstabCell width="120" height="20">
                    <cellContents mode="Opaque" style="Crosstab_CD">
                        <textField>
                            <reportElement x="0" y="0" width="60" height="20" uuid="861d0d3a-d774-4b0c-ae7d-ace315bf305c"/>
                            <textFieldExpression><![CDATA[$V{col2_MEASURE1}]]></textFieldExpression>
                        </textField>
                        <textField>
                            <reportElement x="60" y="0" width="60" height="20" uuid="163ed502-e753-444a-942d-832d84da0a5f">
                            </reportElement>
                            <textFieldExpression><![CDATA[$V{col3_MEASURE1}]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabCell>
                <crosstabCell width="60" height="20" columnTotalGroup="col41">
                    <cellContents mode="Opaque" style="Crosstab_CT">
                        <textField>
                            <reportElement x="0" y="0" width="60" height="10" forecolor="#FFFFFF" uuid="2576b9e2-3bba-40e3-aa15-5f4f0aada549"/>
                            <textFieldExpression><![CDATA[$V{col2_MEASURE1}]]></textFieldExpression>
                        </textField>
                        <textField>
                            <reportElement x="0" y="10" width="60" height="10" forecolor="#FFFFFF" uuid="a111181f-b60f-4afd-8292-9e260c1b9ce2"/>
                            <textFieldExpression><![CDATA[$V{col3_MEASURE1}]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabCell>
                <crosstabCell width="60" height="20" rowTotalGroup="col11">
                    <cellContents mode="Opaque" style="Crosstab_CT">
                        <textField>
                            <reportElement x="0" y="0" width="60" height="10" forecolor="#FFFFFF" uuid="9adf6c9c-acee-4673-8b70-a376e7d1cbb4"/>
                            <textFieldExpression><![CDATA[$V{col2_MEASURE1}]]></textFieldExpression>
                        </textField>
                        <textField>
                            <reportElement x="0" y="10" width="60" height="10" forecolor="#FFFFFF" uuid="9baedeed-4770-4153-b639-afc0965e9467"/>
                            <textFieldExpression><![CDATA[$V{col3_MEASURE1}]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabCell>
                <crosstabCell width="60" height="20" rowTotalGroup="col11" columnTotalGroup="col41">
                    <cellContents mode="Opaque" style="Crosstab_CT">
                        <textField>
                            <reportElement x="0" y="0" width="60" height="10" forecolor="#FFFFFF" uuid="a2805e0a-080d-42be-ad86-a7e8e666f571"/>
                            <textFieldExpression><![CDATA[$V{col2_MEASURE1}]]></textFieldExpression>
                        </textField>
                        <textField>
                            <reportElement x="0" y="10" width="60" height="10" forecolor="#FFFFFF" uuid="c485f69d-91e1-4b19-a8ab-bdbfa3cafcc6"/>
                            <textFieldExpression><![CDATA[$V{col3_MEASURE1}]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabCell>
            </crosstab>
        </band>
    </summary>
</jasperReport>
亚历克斯·K

最好保持measureExpression不变,并为textFieldExpression应用格式

交叉表中textFieldExpression可以与交叉表的参数值一起使用。

  • 如果主要的主要数据集交叉表中使用,则可以在交叉表的单元格中使用交叉表的参数。
  • 如果另一个数据集交叉表中使用,我们可以交叉表的单元格中使用该数据集的参数。

例子

数据源

CSV数据源使用例如英寸

col1,col2,col3,col4
a,a123,10,12/02/2016
a,a123,20,30/01/2016
a,a123,44,21/01/2016
a,b456,5,28/03/2016
b,a123,15,23/03/2015
b,b456,100,13/05/2015
b,b456,200,10/09/2015
b,b456,130,09/09/2017

在下面的示例中,此数据源的数据适配器的名称为values.csv文件的第一行被跳过-它包含列的名称。

报告模板

Col1中被使用rowGroup,S COL2在使用columnGroup秒。measureExpression帮助下,交叉表显示了每个组col3总和最高日期(col4)。

该格式将应用于textField该参数将用于日期格式。

在此示例中,主要数据集用于显示交叉表中的数据。我们需要将报表的参数值传递给交叉表的参数,因为我们不能在交叉表中使用报表的参数(极少数例外)。

<crosstabParameter name="dateFormat" class="java.text.SimpleDateFormat">
    <parameterValueExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}.get("SIMPLE_DATE_FORMAT")]]></parameterValueExpression>
</crosstabParameter>

-这是借助REPORT_PARAMETERS_MAP报表参数对交叉表参数(dateFormat)的初始化可以从交叉表访问REPORT_PARAMETERS_MAP参数的值

报表参数SIMPLE_DATE_FORMAT的值可以例如通过Java代码传递给报表

JRXML代码:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Formatted measures" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="values.csv"/>
    <style name="Crosstab_CH" mode="Opaque" backcolor="#F0F8FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Crosstab_CD" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <parameter name="SIMPLE_DATE_FORMAT" class="java.text.SimpleDateFormat" isForPrompting="false">
        <defaultValueExpression><![CDATA[new java.text.SimpleDateFormat("dd.MM.yyyy")]]></defaultValueExpression>
    </parameter>
    <field name="col1" class="java.lang.String"/>
    <field name="col2" class="java.lang.String"/>
    <field name="col3" class="java.lang.Integer"/>
    <field name="col4" class="java.util.Date"/>
    <summary>
        <band height="270">
            <crosstab>
                <reportElement x="20" y="70" width="525" height="200" >
                    <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
                </reportElement>
                <crosstabParameter name="dateFormat" class="java.text.SimpleDateFormat">
                    <parameterValueExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}.get("SIMPLE_DATE_FORMAT")]]></parameterValueExpression>
                </crosstabParameter>
                <rowGroup name="col1" width="60">
                    <bucket class="java.lang.String">
                        <bucketExpression><![CDATA[$F{col1}]]></bucketExpression>
                    </bucket>
                    <crosstabRowHeader>
                        <cellContents mode="Opaque" style="Crosstab_CH">
                            <textField>
                                <reportElement x="0" y="0" width="60" height="20"/>
                                <textFieldExpression><![CDATA[$V{col1}]]></textFieldExpression>
                            </textField>
                        </cellContents>
                    </crosstabRowHeader>
                </rowGroup>
                <columnGroup name="col2" height="20">
                    <bucket class="java.lang.String">
                        <bucketExpression><![CDATA[$F{col2}]]></bucketExpression>
                    </bucket>
                    <crosstabColumnHeader>
                        <cellContents mode="Opaque" style="Crosstab_CH">
                            <textField>
                                <reportElement x="0" y="0" width="180" height="20"/>
                                <textFieldExpression><![CDATA[$V{col2}]]></textFieldExpression>
                            </textField>
                        </cellContents>
                    </crosstabColumnHeader>
                </columnGroup>
                <measure name="col3_MEASURE" class="java.lang.Integer" calculation="Sum">
                    <measureExpression><![CDATA[$F{col3}]]></measureExpression>
                </measure>
                <measure name="col4_MEASURE" class="java.util.Date" calculation="Highest">
                    <measureExpression><![CDATA[$F{col4}]]></measureExpression>
                </measure>
                <crosstabCell width="180" height="40">
                    <cellContents mode="Opaque" style="Crosstab_CD">
                        <textField pattern="#,##0.00">
                            <reportElement x="0" y="0" width="180" height="20"/>
                            <textFieldExpression><![CDATA[$V{col3_MEASURE}]]></textFieldExpression>
                        </textField>
                        <textField>
                            <reportElement x="0" y="20" width="180" height="20"/>
                            <textFieldExpression><![CDATA[$V{col2}.equals("a123") ? $P{dateFormat}.format($V{col4_MEASURE}) :
 new SimpleDateFormat("dd/MM/yy").format($V{col4_MEASURE})]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabCell>
            </crosstab>
        </band>
    </summary>
</jasperReport>

如本例所示,用于显示数据的表达式可能很复杂。借助表达:

<textFieldExpression><![CDATA[$V{col2}.equals("a123") ? $P{dateFormat}.format($V{col4_MEASURE}) : new SimpleDateFormat("dd/MM/yy").format($V{col4_MEASURE})]]></textFieldExpression>

我们针对不同的列(col2以不同的格式显示日期

输出结果

Jaspersoft Studio中的结果将是:

在JSS中预览

借助于模式属性格式化数值的总和与借助于Java表达式格式化日期的最大值

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VBA脚本使用不同的颜色,缓慢的电子表格来格式化单元格

来自分类Dev

如何在Excel 2007中使用条件格式来格式化单元格

来自分类Dev

使用 Measure 中定义的单元格属性来格式化 icCube 表

来自分类Dev

VBA脚本使用不同的颜色,缓慢的电子表格格式化单元格

来自分类Dev

如何使用Excel数据栏格式化带有文本值的单元格?

来自分类Dev

基于公式的条件格式来格式化同一行中的单元格

来自分类Dev

使用worksheet.add_table添加数据时格式化单元格数据类型

来自分类Dev

如何从不同的单元格检索2个值并在不同的单元格中格式化它们?

来自分类Dev

VBA:单元格中嵌入的字符串(例如“ 35英里”)-如何根据距离有多大来格式化单元格?

来自分类Dev

格式化Excel单元格的值和数据类型

来自分类Dev

在不同单元格中使用值进行条件格式化

来自分类Dev

如何根据列标题格式化单个单元格类型?

来自分类Dev

如何从JqGrid中的单元格的自定义格式化程序访问其他行数据

来自分类Dev

使用两种不同类型的单元格时如何确定集合视图的大小

来自分类Dev

如何在Aspose中格式化单元格

来自分类Dev

如何使Excel 2007停止格式化单元格?

来自分类Dev

如何根据单元格的值有条件地格式化[gt]表中的单元格

来自分类Dev

如何根据Excel中的另一个单元格值格式化单元格?

来自分类Dev

在Excel中获取单元格的格式化值

来自分类Dev

格式化表格单元格中的值

来自分类Dev

Excel 格式化单元格中的数字

来自分类Dev

格式化tableView单元格中的文本

来自分类Dev

根据php中的值格式化单元格

来自分类Dev

使用python在excel中格式化单元格

来自分类Dev

使用脚本格式化单元格

来自分类Dev

格式化数据表中的单元格值

来自分类Dev

根据多个条件格式化熊猫数据框中单元格的颜色

来自分类Dev

如何使用Excel公式从格式化文本中的Excel单元格中提取大文本?

来自分类Dev

如何在jqgrid中获取行的格式化单元格值

Related 相关文章

  1. 1

    VBA脚本使用不同的颜色,缓慢的电子表格来格式化单元格

  2. 2

    如何在Excel 2007中使用条件格式来格式化单元格

  3. 3

    使用 Measure 中定义的单元格属性来格式化 icCube 表

  4. 4

    VBA脚本使用不同的颜色,缓慢的电子表格格式化单元格

  5. 5

    如何使用Excel数据栏格式化带有文本值的单元格?

  6. 6

    基于公式的条件格式来格式化同一行中的单元格

  7. 7

    使用worksheet.add_table添加数据时格式化单元格数据类型

  8. 8

    如何从不同的单元格检索2个值并在不同的单元格中格式化它们?

  9. 9

    VBA:单元格中嵌入的字符串(例如“ 35英里”)-如何根据距离有多大来格式化单元格?

  10. 10

    格式化Excel单元格的值和数据类型

  11. 11

    在不同单元格中使用值进行条件格式化

  12. 12

    如何根据列标题格式化单个单元格类型?

  13. 13

    如何从JqGrid中的单元格的自定义格式化程序访问其他行数据

  14. 14

    使用两种不同类型的单元格时如何确定集合视图的大小

  15. 15

    如何在Aspose中格式化单元格

  16. 16

    如何使Excel 2007停止格式化单元格?

  17. 17

    如何根据单元格的值有条件地格式化[gt]表中的单元格

  18. 18

    如何根据Excel中的另一个单元格值格式化单元格?

  19. 19

    在Excel中获取单元格的格式化值

  20. 20

    格式化表格单元格中的值

  21. 21

    Excel 格式化单元格中的数字

  22. 22

    格式化tableView单元格中的文本

  23. 23

    根据php中的值格式化单元格

  24. 24

    使用python在excel中格式化单元格

  25. 25

    使用脚本格式化单元格

  26. 26

    格式化数据表中的单元格值

  27. 27

    根据多个条件格式化熊猫数据框中单元格的颜色

  28. 28

    如何使用Excel公式从格式化文本中的Excel单元格中提取大文本?

  29. 29

    如何在jqgrid中获取行的格式化单元格值

热门标签

归档