我使用此代码以MS Excel格式创建报告:
JRXlsExporter exporter = new JRXlsExporter();
从那里我不知道是否可以告诉JasperReports在每一列上应用自动过滤器。
答案 0 :(得分:1)
我遇到了同样的问题,即在我的电子表格(.xls)中我想为所有列添加自动过滤器(15),所以我添加了一个属性(属性表达式)name = net.sf.jasperreports.export .xls.auto.filter和值为'开始'在第一个列标题和相同的属性,值为最后一个列标题的结尾,它起作用。
答案 1 :(得分:1)
转到'导出器参数'窗格,并确保没有任何'开始'或者'停止'选项设置为自动筛选。在相关列表框中选择空白区域(请参阅附图)。然后再次运行报告。这次你应该在正确的位置看到过滤器。
http://community.jaspersoft.com/jaspersoft-studio/issues/6876
答案 2 :(得分:0)
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>
我使用了细节带来显示数据。对于第一列,我将开始值设置为的 net.sf.jasperreports.export.xls.auto.filter 属性列标题区域中的staticText (将是Excel文件中的列标题)和第二个(最后一列)的结束值。
如果仅使用一列的设置属性,则只会创建一个过滤器。
我们可以通过 JSS 中的上下文菜单“XLS标签 - &gt;自动过滤器 - &gt;开始(结束)”轻松设置属性。
以MS Excel格式生成的输出文件包含两列的自动过滤器。该文件是在JSS的帮助下生成的。
有关为导出的Excel文件应用不同功能的详细信息,请参阅vendor site