我已经创建了表的结构,在第2页中,源数据是一个JSON,包含产品及其属性列表。我想将JSON数据显示到表中,实际上有一个包含表的子报表,但不知道如何将JSON数据传递到子报表,并根据JSON数据中的productList键进行填充。报告从接收用户数据的java类填充。
我不知道如何填写第 2 页的表格,有人可以帮助我吗?
这是我在Jaspersoft Studio 6.10中的代码
主报告
https://app.box.com/s/qhl0158r03g9jowrhofojd6pkodwkojs
子报表
https://app.box.com/s/gt5h19qxj1gs5ldghvajd3umx720dwgp
Java类(填写报告)
...
JasperReport jr = null;
//DATA TO THE REPORT
String nombreCliente = "Caracol Radio LTDA.";
String contactoCliente = "3694100";
String nombreUsuario = "David";
String apellidoUsuario = "Torres";
String cargoUsuario = "Aux. Administrativo";
String nombreEmpresaCondicionesComerciales = "BIO BOLSA";
String tipoCuentaCondicionesComerciales = "Ahorros";
String bancoCondicionesComerciales = "Davivienda";
String numeroCuentaCondicionesComerciales = "481670000670";
String domicilioCondicionesEntrega = "Bogotá";
String simboloMonedaCondicionesEntrega = "$";
String embalajeSuperiorCondicionesEntrega = "800.000";
String impuestoCondicionesEntrega = "iva";
String domicilioFueraCondicionesEntrega = "iva";
String capacidadInstaladaOrdenProduccion = "1.000.000";
String tipoEmpresa = "S.A.S";
String regimenEmpresa = "Regimen Comun";
String nitEmpresa = "900.390.537-1";
String telefonosEmpresa = "Tels: (57) (1) 7137516 EXT 1142 – 7138731 - 2033205 Cel: (57) 300 275 45 51";
String correoWebEmpresa = "Web: www.biobolsa.com.co E-mail: pchacon@biobolsa.com.co";
String direccionEmpresa = "Fábrica CRA 57 NO 45 A – 52 SUR LA SEVILLANA";
String ciudadEmpresa = "Bogotá D.C, Colombia";
Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("NombreCliente", nombreCliente);
parametros.put("ContactoCliente", contactoCliente);
parametros.put("NombreUsuario", nombreUsuario);
parametros.put("ApellidoUsuario", apellidoUsuario);
parametros.put("CargoUsuario", cargoUsuario);
parametros.put("TipoEmpresa", tipoEmpresa);
parametros.put("Regimen", regimenEmpresa);
parametros.put("Nit", nitEmpresa);
parametros.put("Telefonos", telefonosEmpresa);
parametros.put("WebCorreo", correoWebEmpresa);
parametros.put("Direccion", direccionEmpresa);
parametros.put("Ciudad", ciudadEmpresa);
parametros.put("NombreEmpresaCondicionesComerciales", nombreEmpresaCondicionesComerciales);
parametros.put("TipoCuentaCondicionesComerciales", tipoCuentaCondicionesComerciales);
parametros.put("BancoCondicionesComerciales", bancoCondicionesComerciales);
parametros.put("NumeroCuentaCondicionesComerciales", numeroCuentaCondicionesComerciales);
parametros.put("DomicilioCondicionesEntrega", domicilioCondicionesEntrega);
parametros.put("SimboloMonedaCondicionesEntrega", simboloMonedaCondicionesEntrega);
parametros.put("EmbalajeSuperiorCondicionesEntrega", embalajeSuperiorCondicionesEntrega);
parametros.put("ImpuestoCondicionesEntrega", impuestoCondicionesEntrega);
parametros.put("DomicilioFueraCondicionesEntrega", domicilioFueraCondicionesEntrega);
parametros.put("CapacidadInstaladaOrdenProduccion", capacidadInstaladaOrdenProduccion);
try {
jr = JasperCompileManager.compileReport("PATH\\TO\\REPORT\\ReporteBiobolsa.jrxml");
JasperPrint jp = JasperFillManager.fillReport(jr, parametros, new JREmptyDataSource());
JasperExportManager.exportReportToPdfFile(jp, "PATH\\TO\\EXPORT\\PDFBiobolsa.pdf");
return Response
.status(Response.Status.OK)
.entity("OK.......!!")
.build();
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return Response
.status(Response.Status.INTERNAL_SERVER_ERROR)
.entity("ERROR.......!!")
.build();
}
JSON数据
{
"productList": [{
"productNumber": 1,
"modelo": "Bolsa Deportiva Plana",
"tela": "Tafeta",
"dimensiones": "40x35",
"destino": "Bog, D.C",
"accesoriosModelo": [{
"nombre": "Cordon"
},{
"nombre": "Accesorio 2"
},{
"nombre": "Accesorio 3"
}],
"accesoriosAdicionales": [{
"nombre": "Bolsillo (30x40)"
},{
"nombre": "Accesorio Adicional 2"
},{
"nombre": "Accesorio Adicional 3"
}],
"estampado": [{
"nombre": "Cara Frontal – 1 Tinta"
},{
"nombre": "Cara Posterior – 1 Tinta"
},{
"nombre": "Estampado 3"
}],
"observaciones": "Observacion de Prueba",
"cantidad": 500,
"vrUnitario": 1200,
"subTotal": 600000,
"iva": 50000,
"total": 650000
},
{
"productNumber": 2,
"modelo": "Bolsa Deportiva",
"tela": "Otra",
"dimensiones": "50x20",
"destino": "Bog, D.C",
"accesoriosModelo": [{
"nombre": "Cremallera"
},{
"nombre": "Accesorio 2"
},{
"nombre": "Accesorio 3"
}],
"accesoriosAdicionales": [{
"nombre": "Botones"
},{
"nombre": "Accesorio Adicional 2"
},{
"nombre": "Accesorio Adicional 3"
}],
"estampado": [{
"nombre": "Cara Posterior – 1 Tinta"
}],
"observaciones": "Observacion de Prueba",
"cantidad": 400,
"vrUnitario": 900,
"subTotal": 360000,
"iva": 40000,
"total": 400000
}
]
}
如何将JSON数据提供给报表?如果您通过java程序将数据通过参数提供给主报告,您必须在报告中定义参数。当您想要将数据提供给子报表时,必须在两个报表(子报表和主报表)中定义完全相同的参数。重要的是,不要以另一种方式使用希望用于表的参数(datasource)。Jasper只使用一次数据源,如果你想对一个表和一个图表使用相同的数据源(因为你想用两种不同的方式显示相同的数据),你必须给报表两个不同的数据源相同的数据。
我想在iReport中将数据集从主报表转移到子报表。在Odoo版本中,我就这样使用过。 现在我使用 Odoo 版本 8 和版本 8 的新jasper_reports模块。所以我将一些jar文件从jasper_reports模块转移到iReport IDE。后。。。来自Odoo版本7的所有报告都导致了Groovy错误。这就是为什么我在iReport中将Groovy语言改为Java语言的原因。但。。。
我需要您的帮助,将csv数据源传递给subReports。 我将非常感谢您的建议或解决方案。 我使用的是iReport 5.0专业版。 我有一个非常复杂的报告,该报告从多个(大约10个)csv文件中获取数据。 我已经为报告的每个部分创建了子报告,每个子报告作为一个单独的报告运行良好。 但是当我尝试将所有子报表集成到主报表中时,我无法将数据源传递给子报表。 在Main报告中,我创建了一个名为CSVD
我有一个从DB中检索一些字段的主报告。在主报告下,我创建了一个数据集,它从另一个表中提取了一个字段值,例如X。现在我在这个主报表中包含了一个子报表。是否可以将字段X传递给子报表? 结构: 注意:字段X基本上是我需要传递给子报表的平均值,该值根据主报表查询返回的结果数量打印多次。 我正在使用Jaspersoft Studio ver 5.6.0 如果不可能,将此平均值字段传递给子报表的其他选项是什么
我将页码信息从主报表传递到页脚子报表。在主报表中,我已经声明了子报表参数pageTot和pageNum。它们通过向导映射到主报告$V{PAGE _ COUNT}和$V{PAGE _ NUMBER}中的参数。在子报表中,我声明了两个参数pageNum和pageTot。在它们的参数属性中,我取消了将use作为提示,并将它们都设置为java.lang.integer类型。然后,我替换了文本字段的文本字段
我正在从 JRBeanCollectionDataSource 生成报告。此报告是关于客户的订单的。 这是我的代码 当客户时,需要生成包含客户详细信息和客户订单列表的报告。由于接受一个集合,这就是我所做的。 如何提取< code>Customer中的< code>CustomerOrder列表并将其作为子报表传递?