我必须基于将动态提供的各种参数来生成报告。在某些情况下,参数可以为null。例如,我必须从具有 ID* , 姓名 , 年龄 ,
性别 和 maritalStatus 作为字段的表 Person中 ,生成有关 30岁已婚男性的
报告。在另一些时候,可能需要 不考虑年龄 就 结婚的女性
。如果我在这两种情况下都使用相同的碧玉,则年龄限制在第二种情况下将为null。有什么办法可以解决这种情况?
*
此外,是否可以动态指定应在报告中产生哪些所有字段?
使用JasperReport
API
动态生成报告的示例:
//JasperDesign
JasperDesign jasperDesign = new JasperDesign();
jasperDesign.setName("The dynamically generated report");
jasperDesign.setPageWidth(595);
jasperDesign.setPageHeight(842);
jasperDesign.setColumnWidth(515);
jasperDesign.setColumnSpacing(0);
jasperDesign.setLeftMargin(40);
jasperDesign.setRightMargin(40);
jasperDesign.setTopMargin(50);
jasperDesign.setBottomMargin(50);
//Query
JRDesignQuery query = new JRDesignQuery();
query.setText("SELECT * FROM Address $P!{OrderByClause}");
jasperDesign.setQuery(query);
//Fields
JRDesignField field = new JRDesignField();
field.setName("Id");
field.setValueClass(java.lang.Integer.class);
jasperDesign.addField(field);
field = new JRDesignField();
field.setName("FirstName");
field.setValueClass(java.lang.String.class);
jasperDesign.addField(field);
field = new JRDesignField();
field.setName("LastName");
field.setValueClass(java.lang.String.class);
jasperDesign.addField(field);
//some code
//Detail
band = new JRDesignBand();
band.setHeight(40);
JRDesignStaticText staticText = new JRDesignStaticText();
staticText.setX(0);
staticText.setY(0);
staticText.setWidth(60);
staticText.setHeight(20);
staticText.setMode(ModeEnum.OPAQUE);
staticText.setHorizontalAlignment(HorizontalAlignEnum.LEFT);
staticText.setStyle(boldStyle);
staticText.setText("ID: ");
staticText.getLineBox().getLeftPen().setLineWidth(1);
staticText.getLineBox().getTopPen().setLineWidth(1);
staticText.getLineBox().setLeftPadding(10);
band.addElement(staticText);
textField = new JRDesignTextField();
textField.setX(60);
textField.setY(0);
textField.setWidth(200);
textField.setHeight(20);
textField.setHorizontalAlignment(HorizontalAlignEnum.LEFT);
textField.setStyle(normalStyle);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.Integer.class);
expression.setText("$F{Id}");
textField.setExpression(expression);
textField.getLineBox().getTopPen().setLineWidth(1);
textField.getLineBox().getRightPen().setLineWidth(1);
textField.getLineBox().setLeftPadding(10);
band.addElement(textField);
staticText = new JRDesignStaticText();
staticText.setX(0);
staticText.setY(20);
staticText.setWidth(60);
staticText.setHeight(20);
staticText.setMode(ModeEnum.OPAQUE);
staticText.setHorizontalAlignment(HorizontalAlignEnum.LEFT);
staticText.setStyle(boldStyle);
staticText.setText("Name: ");
staticText.getLineBox().getLeftPen().setLineWidth(1);
staticText.getLineBox().getBottomPen().setLineWidth(1);
staticText.getLineBox().setLeftPadding(10);
band.addElement(staticText);
textField = new JRDesignTextField();
textField.setStretchWithOverflow(true);
textField.setX(60);
textField.setY(20);
textField.setWidth(200);
textField.setHeight(20);
textField.setPositionType(PositionTypeEnum.FLOAT);
textField.setStyle(normalStyle);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.String.class);
expression.setText("$F{FirstName} + \" \" + $F{LastName}");
textField.setExpression(expression);
textField.getLineBox().getRightPen().setLineWidth(1);
textField.getLineBox().getBottomPen().setLineWidth(1);
textField.getLineBox().setLeftPadding(10);
band.addElement(textField);
((JRDesignSection) jasperDesign.getDetailSection()).addBand(band);
您可以从JasperReports分发包的
%JasperReportsFolder%/ demo / samples
文件夹中找到更多示例。
What the world really needs is more love and less paperwork. — Pearl Bailey 大型的基础设施架构往往是真正的第一受害者。如果你正管理着许多机器, 那么使用 Puppet 的报告设施,可以为你提供一些关于正在发生什么的有价值的信息。 操作步骤 要启用报告,只要将如下的行加入客户端的 puppet.conf 文件: report
我想得到cucumber报告,但它没有生成。我得到这个错误在运行通过mvn清洁安装。我不能解决这个问题。我是自动化方面的新手... /*在以Maven Clean安装方式运行期间,我遇到以下错误: 以下文章:[错误][帮助1]http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
上面的代码用于生成allure报告并运行测试,它运行并生成reports-allure-results中的一个文件夹,其中包含JSON文件。见下方截图
问题内容: 我正在尝试从列表中生成一个简单的 JR 报告。 我一直在 从bean检索name时出错:name 此错误是由于错误的getter方法名引起的,因为jasper使用反射来从bean中获取字段。但是,即使更正了getter方法名称。我不断收到这个例外。还有其他问题吗? 我的 jrxml 文件是 Bean类是 我在这里生成报告 我们是否需要对bean类进行更多修改? 问题答案: 解决方案非常
问题内容: 我正在使用php代码查询数据库,结果将用于生成报告。 如果我想以pdf格式生成报告,该怎么办? 问题答案: 如果您的PDF文件中需要UTF支持,请考虑使用库。 从此处下载:http : //www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf 在您的脚本中:
问题内容: 我正在尝试使用lcov为我的单元测试套件生成覆盖率报告,但是我什至无法捕获跟踪文件。错误消息表明找不到源文件。该代码由构建机器上的Jenkins作业编译,单元测试作为目标机器上的下游作业执行。源代码和gcno文件被传输到下游作业,然后下游作业执行对lcov的调用。以下是所有详细信息,可能需要一杯咖啡。 在构建机器上,执行make 我想要覆盖的源代码在以下子目录中 目标文件和gcno文件