jaspersoft从csv文件中打印特定记录

时间:2017-10-24 11:44:37

标签: jasper-reports

我在Jaspersoft Studio中设置了一个Label,它引用了CSV格式的数据适配器文件。 csv文件包含数千条记录。我希望最终用户能够选择或键入输入"命令no"用于打印的特定记录。如果输入一个订单号 - 找到并打印记录。如果输入了10个订单 - 将打印10条记录。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用参数让用户进行输入。但由于CSV不是查询语言,因此可以在数据源中使用字段表达式

以下是添加参数

的方法

https://community.jaspersoft.com/wiki/using-report-parameters

这就是如何使用Field Expression

https://community.jaspersoft.com/wiki/how-apply-parameters-csv-data-source

明细: 按属性过滤:

在查询对话框中,选择“过滤表达式”选项卡,并使用此代码

填写该字段
$F{order_no}.equals($P{order_no})

此代码将过滤 order_no字段等于 order_no参数

的csv行

按多个order_no过滤:

JasperReport允许用户在Java或Groovy中进行一些脚本编写(取决于他们的设置)。因此,您可以执行更复杂的任务,例如将输入拆分为数组并使用它来搜索行。

我想到的是,要求最终用户按空格分隔order_no并使用此脚本过滤数据。

Arrays.asList($P{order_no}.split(" ")).indexOf($F{order_no}) > -1

我还没有测试过这段代码,但希望你能得到这个想法。 (试用脚本)。