我有一个要求,我需要显示一个由边框包围的数据部分,如下所示:
我尝试在Background band中添加Rectangle组件.在内部预览窗口和PDF预览中,它显示如上,但是当我在服务器中运行它或使用HTML预览时,边框消失.我还试图在Detail带中插入Rectangle组件,并使用Frames而不是Rectangle,围绕数据,但问题相同.
我正在使用iReport 5.0.1,兼容性设置为JasperReports 3.5.1.
这是我的jrxml文件:
<?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="Payslip" pageWidth="1000" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="960" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<import value="org.joda.time.DateTime"/>
<style name="Headings" vAlign="Middle" lineSpacing="1_1_2" fontName="Arial" fontSize="12" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
<style name="Data" isDefault="true" vAlign="Middle" lineSpacing="1_1_2" fontName="Arial" fontSize="11"/>
<parameter name="rptName" class="java.lang.String" isForPrompting="false"/>
<parameter name="company" class="java.lang.String"/>
<field name="empName" class="java.lang.String"/>
<field name="salaryMonthName" class="java.lang.String"/>
<field name="salaryMonthYear" class="java.lang.Integer"/>
<field name="employeeCode" class="java.lang.String"/>
<field name="designation" class="java.lang.String"/>
<field name="grade" class="java.lang.String"/>
<field name="location" class="java.lang.String"/>
<field name="department" class="java.lang.String"/>
<field name="branch" …Run Code Online (Sandbox Code Playgroud) 我正在制作一个使用 Jasper Reporting Tools 生成报告的 jsf 应用程序。我正在使用iReport来设计我的报告。我想知道iReport 是否可以接受其他字段内的字段?
所以我这样做了:
$F{student.studentName}在我的 iReport pdf 设计器中。的student目的是在一个场detRecord对象和studentName是在一个场student对象。
不幸的是,当我尝试编译时,iReport给了我这样的错误:
et.sf.jasperreports.engine.design.JRValidationException: Report design not valid : 1. Field not found : student.studentName
任何想法如何传递带有字段的对象,其中也有字段?
我正在通过Oracle DB创建iReport报告.我必须根据这样的条件选择一些值:
AND EXISTS (SELECT 1 FROM TABLE_1 WHERE x = y)
OR EXISTS (SELECT 1 FROM TABLE_2 WHERE z = y)
Run Code Online (Sandbox Code Playgroud)
只有当第一个EXISTS为假时才能执行第二个EXISTS吗?
我试图从列表中生成一个简单的JR报告.
我一直在从bean:name获取错误检索字段值
此错误是由于错误的getter方法名称,因为jasper使用反射来从bean中获取字段.但即使在更正了getter方法名称之后.我一直得到这个例外.还有其他问题吗?
我的jrxml文件是
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="simpleReport">
<field name="name" class="java.lang.String"/>
<field name="count" class="java.lang.String"/>
<title>
<band height="50">
<staticText>
<reportElement x="0" y="0" width="180" height="15"/>
<textElement/>
<text><![CDATA[Report]]></text>
</staticText>
</band>
</title>
<pageHeader>
<band/>
</pageHeader>
<columnHeader>
<band height="20">
<staticText>
<reportElement x="180" y="0" width="180" height="20"/>
<textElement>
<font isUnderline="true"/>
</textElement>
<text><![CDATA[Event Name]]></text>
</staticText>
<staticText>
<reportElement x="360" y="0" width="180" height="20"/>
<textElement>
<font isUnderline="true"/>
</textElement>
<text><![CDATA[Count]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20"> …Run Code Online (Sandbox Code Playgroud) 我正在尝试此查询但没有成功.
SELECT name, phone_office, billing_address_city, billing_address_street, billing_address_country
FROM accounts
WHERE ($P!{EmployeeID} is null or assigned_user_id = $P!{EmployeeID})
ORDER BY billing_address_country, billing_address_city
Run Code Online (Sandbox Code Playgroud)
这个网址将按EmployeeID进行过滤,工作正常:
.../flow.html?_flowId=viewReportFlow&reportUnit=/reports/samples/EmployeeAccounts&EmployeeID=sarah_id
Run Code Online (Sandbox Code Playgroud)
但是,当我删除EmployeeID参数时,我想删除过滤器在哪里.所以应该显示所有结果.
.../flow.html?_flowId=viewReportFlow&reportUnit=/reports/samples/EmployeeAccounts
Run Code Online (Sandbox Code Playgroud)
我的问题是,在sql查询中传递可选where的正确方法是什么.
我们需要使用JasperReports生成文本报告。
精度要准确,样本格式如下

所述的JasperReports,exportToText方法不满足上述标准和反复调整的.jrxml未投放的目的。
我们也调整了字符宽度和字符高度,但行和列之间的间距仍然不正确。
JasperReports API是否支持文本格式的这种精度?
有没有其他 API 可以帮助我们实现这种格式?
我有这个代码.我有一个jrxml文件.我可以成功创建一个jasperReport对象.但我不知道如何从此创建jasper文件,我想将jasper保存到c盘中的文件位置.
JasperReport jasperReport = null;
JasperCompileManager.compileReport(getResourceAsStream("Sample_Report.jrxml"));
try {
jasperReport = JasperCompileManager
.compileReport("C:\\xxx.jrxml");
System.out.println("jasper created " + jasperReport);
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 在JasperReports(使用Jaspersoft Studio)中,是否有一种显示内容而不包含总计的方法?

我在这里有交叉表代码。如果我删除出现的行<crosstabTotalRowHeader>和<crosstabTotalColumnHeader>,则交叉表将继续显示总计列,即没有标题的列。我需要删除该列。
<crosstab>
<reportElement x="0" y="0" width="442" height="240" uuid="aae99187-4857-48ad-b2c6-6a66c5e6e89a"/>
<crosstabDataset>
<dataset>
<datasetRun subDataset="grafica_perspectiva" uuid="a819174c-e145-4ad4-a3ef-cddde875ceab">
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
</datasetRun>
</dataset>
</crosstabDataset>
<rowGroup name="perspectiva1" width="60" totalPosition="End">
<bucket class="java.lang.String">
<bucketExpression><![CDATA[$F{perspectiva}]]></bucketExpression>
</bucket>
<crosstabRowHeader>
<cellContents mode="Opaque" style="Crosstab_CH">
<textField>
<reportElement x="0" y="0" width="60" height="20" forecolor="#FFFFFF"
uuid="ff8ba239-2c96-4959-8d57-5751f1e67ce1"/>
<textFieldExpression><![CDATA[$V{perspectiva1}]]></textFieldExpression>
</textField>
</cellContents>
</crosstabRowHeader>
<crosstabTotalRowHeader>
<cellContents/>
</crosstabTotalRowHeader>
</rowGroup>
<columnGroup name="cot_nombre1" height="30" totalPosition="End">
<bucket class="java.lang.String">
<bucketExpression><![CDATA[$F{cot_nombre}]]></bucketExpression>
</bucket>
<crosstabColumnHeader>
<cellContents mode="Opaque" style="Crosstab_CH">
<textField>
<reportElement stretchType="RelativeToTallestObject" x="0" y="0" width="140" height="30"
forecolor="#FFFFFF" uuid="76a9a21c-efed-4164-ab6c-4f91e2bf3903"/>
<textFieldExpression><![CDATA[$V{cot_nombre1}]]></textFieldExpression>
</textField>
</cellContents>
</crosstabColumnHeader> …Run Code Online (Sandbox Code Playgroud) 所以我有一个显示 jasper 报告的 java 应用程序。我使用Netbeans 的iReport插件在报告中放置了一张图像。在我当前的机器上一切都显示正常,但是当我尝试在另一台机器上运行编译后的 jar 时,报告将无法加载。
从Windows控制台来看,我认为这是因为图像的路径是绝对的,即引用开发机器硬盘上的特定文件夹。我需要使其与 jar 文件相关。我已将图像放入包中并确认它位于编译后的 jar 内。但是当我将iReport中的“图像表达式”值更改为“/reports/Logo.jpg”(其中 /reports 是包)并运行应用程序时,我得到
EXCEPTION: Byte data not found at : /reports/Logo.jpgnet.sf.jasperreports.engine.JRException: Byte data not found at : reports/Logo.jpg
Run Code Online (Sandbox Code Playgroud)
有什么想法要做什么吗?我很困惑,非常感谢任何帮助!
更新:明白了。必须在报表中创建一个参数并从图像表达式中调用该参数。然后我在Java代码中创建了HashMap和InputStream ,并将输入流放入哈希映射中!这么简单的事情却需要这么多代码!
Java代码:
//to get images to display in report, pass their relative path as input stream and add to HashMap
//there must be one stream and one HashMap per image
InputStream imgInputStream = this.getClass().getResourceAsStream("/reports/omacLogo.jpg");
InputStream imgInputStream2 = this.getClass().getResourceAsStream("/reports/omacLogo.jpg");
parameters.put("omacLogo", imgInputStream);
parameters2.put("omacLogo", …Run Code Online (Sandbox Code Playgroud) 所以我遇到了JasperReports模式字段的问题。我创建了一个交叉表,我需要所有的都$F{ScoreMeasure}具有两位小数并附加“%”符号。例如,$F{ScoreMeasure}交叉表中的单元格应显示 25.42%。
我遇到的问题是我通过将“%”符号添加到文本字段表达式来附加“%”符号:$V{ScoreMeasure}+"%"。这对于整数来说效果很好。
当我尝试通过添加模式来添加两位小数#,##0.00并运行报告时,我得到一些字段有两位小数,而其他字段有多个小数(最多 8 位)。
如果我从文本字段表达式中删除附加文本(+“%”),我会得到正确的格式。但我不知道如何获得这两个?
以下是它在没有附加“%”的情况下工作时的摘录:
<crosstabCell width="73" height="25" rowTotalGroup="Name">
<cellContents backcolor="#005FB3" mode="Opaque">
<box>
<pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
<textField pattern="#,##0.00">
<reportElement style="Crosstab Data Text" x="0" y="0" width="73" height="25" forecolor="#FFFFFF" uuid="50401fd4-b9b1-4bf2-bd74-9a0f083e77ff"/>
<textElement verticalAlignment="Middle">
<font fontName="Arial"/>
</textElement>
<textFieldExpression><![CDATA[$V{ScoreMeasure}
]]></textFieldExpression>
</textField>
</cellContents>
Run Code Online (Sandbox Code Playgroud)
这里附加了破坏格式的文本:
<crosstabCell width="73" height="25" rowTotalGroup="Name">
<cellContents backcolor="#005FB3" mode="Opaque">
<box>
<pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
<textField pattern="#,##0.00">
<reportElement style="Crosstab Data Text" x="0" y="0" width="73" height="25" forecolor="#FFFFFF" uuid="50401fd4-b9b1-4bf2-bd74-9a0f083e77ff"/>
<textElement verticalAlignment="Middle"> …Run Code Online (Sandbox Code Playgroud)