【问题标题】:Exporting to Excel with JasperReports: How to add AutoFilter for columns使用 JasperReports 导出到 Excel:如何为列添加自动筛选
【发布时间】:2017-07-05 20:42:37
【问题描述】:

我正在使用此代码创建 MS Excel 格式的报告:

JRXlsExporter exporter = new JRXlsExporter();

从那里我不知道是否可以告诉 JasperReports 对每一列应用自动过滤器。

【问题讨论】:

    标签: java jasper-reports export-to-excel autofilter


    【解决方案1】:

    我遇到了同样的问题,即在我的电子表格(.xls)中,我想为所有列(15)添加自动过滤器,所以我添加了一个属性(属性表达式)name = net.sf.jasperreports.export .xls.auto.filter 和值作为“开始”在第一列标题和相同的属性值作为结束在最后一列标题并且它工作。

    【讨论】:

      【解决方案2】:

      转到“导出器参数”窗格并确保没有为“自动过滤器”设置“开始”或“停止”选项。选择相关列表框中的空白区域(参见附图)。然后再次运行报告。这次您应该会在正确的位置看到过滤器。

      http://community.jaspersoft.com/jaspersoft-studio/issues/6876

      【讨论】:

        【解决方案3】:

        JasperReports 引擎可以为 MS Excel 输出格式的列应用自动过滤器。为了应用自动过滤器,我们必须使用net.sf.jasperreports.export.xls.auto.filter 属性。我们应该将此属性应用于标题单元格。可以只为一列或多列设置过滤器。

        工作示例

        数据源

        我在这个示例中使用了 csv 数据源:

        language,framework
        Java,Guava
        Java,Lombok
        Java,JasperReports
        Java,Spring
        Java,Vaadin
        C#,ASP.NET MVC
        C#,NancyFX
        C#,Automapper
        JavaScript,AngularJS
        JavaScript,React
        JavaScript,jQuery
        

        以下示例中此数据源的数据适配器名称为 frameworks.csv

        报告的模板

        我使用 Jaspersoft Studio (JSS) 来设计报告模板。

        <?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="excel_filter" pageWidth="595" pageHeight="842" columnWidth="595" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="b521f87a-96ed-43bd-80bd-c7b81ef2e8aa">
            <property name="com.jaspersoft.studio.data.defaultdataadapter" value="frameworks.csv"/>
            <queryString>
                <![CDATA[]]>
            </queryString>
            <field name="language" class="java.lang.String"/>
            <field name="framework" class="java.lang.String"/>
            <columnHeader>
                <band height="30" splitType="Stretch">
                    <staticText>
                        <reportElement x="0" y="0" width="278" height="30" uuid="6b8ba60b-3df3-4c78-a780-79ee493ca5f8">
                            <property name="net.sf.jasperreports.export.xls.auto.filter" value="Start"/>
                        </reportElement>
                        <textElement textAlignment="Center" verticalAlignment="Middle"/>
                        <text><![CDATA[Language]]></text>
                    </staticText>
                    <staticText>
                        <reportElement x="278" y="0" width="277" height="30" uuid="731ba580-2168-49f6-b844-d02549d3d83c">
                            <property name="net.sf.jasperreports.export.xls.auto.filter" value="End"/>
                        </reportElement>
                        <textElement textAlignment="Center" verticalAlignment="Middle"/>
                        <text><![CDATA[Framework]]></text>
                    </staticText>
                </band>
            </columnHeader>
            <detail>
                <band height="30" splitType="Stretch">
                    <textField>
                        <reportElement x="0" y="0" width="278" height="30" uuid="7bf9acec-b13a-4261-91c1-0bf6f2c9c784"/>
                        <textFieldExpression><![CDATA[$F{language}]]></textFieldExpression>
                    </textField>
                    <textField>
                        <reportElement x="278" y="0" width="277" height="30" uuid="d15bd48e-77ee-43df-b11f-4ec1a65811c0"/>
                        <textFieldExpression><![CDATA[$F{framework}]]></textFieldExpression>
                    </textField>
                </band>
            </detail>
        </jasperReport>
        

        我使用详细信息带来显示数据。对于第一列,我将 Start 值设置为 net.sf.jasperreports.export.xls.auto.filter 属性Column Header 带中的 staticText(将是 Excel 文件中的列标题)和第二(最后)列的 End 值。

        如果仅对一列使用设置属性,则将创建唯一一个过滤器。

        我们可以借助 JSS 中的上下文菜单“XLS 标签 -> 自动过滤器 -> 开始(结束)” 轻松设置属性。

        输出结果

        生成的 MS Excel 格式的输出文件包含两列的自动过滤器。该文件是在 JSS 的帮助下生成的。


        注意事项:

        有关为导出的 Excel 文件应用不同功能的更多信息,请访问vendor site

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-19
          • 1970-01-01
          相关资源
          最近更新 更多