【发布时间】:2017-07-05 20:42:37
【问题描述】:
我正在使用此代码创建 MS Excel 格式的报告:
JRXlsExporter exporter = new JRXlsExporter();
从那里我不知道是否可以告诉 JasperReports 对每一列应用自动过滤器。
【问题讨论】:
标签: java jasper-reports export-to-excel autofilter
我正在使用此代码创建 MS Excel 格式的报告:
JRXlsExporter exporter = new JRXlsExporter();
从那里我不知道是否可以告诉 JasperReports 对每一列应用自动过滤器。
【问题讨论】:
标签: java jasper-reports export-to-excel autofilter
我遇到了同样的问题,即在我的电子表格(.xls)中,我想为所有列(15)添加自动过滤器,所以我添加了一个属性(属性表达式)name = net.sf.jasperreports.export .xls.auto.filter 和值作为“开始”在第一列标题和相同的属性值作为结束在最后一列标题并且它工作。
【讨论】:
转到“导出器参数”窗格并确保没有为“自动过滤器”设置“开始”或“停止”选项。选择相关列表框中的空白区域(参见附图)。然后再次运行报告。这次您应该会在正确的位置看到过滤器。
http://community.jaspersoft.com/jaspersoft-studio/issues/6876
【讨论】:
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
【讨论】: