【发布时间】:2014-12-27 20:31:12
【问题描述】:
我想使用不同项目的 jasper 报告生成账单。为此,我定义了一些字符串数组,我想在账单中显示为项目列表。
我填写jasper报告的代码如下
System.out.println("In printing servlet");
String [] prod = request.getParameterValues("prodn[]");
String [] pkgdate = request.getParameterValues("pkgdate[]");
String [] manufact = request.getParameterValues("manufact[]");
String [] exp = request.getParameterValues("exp[]");
String [] batch = request.getParameterValues("batch[]");
String [] unit = request.getParameterValues("unit[]");
String [] qty = request.getParameterValues("qty[]");
String [] subtot = request.getParameterValues("subtot[]");
ArrayList<String> prodname = new ArrayList<String>();
ArrayList<String> packagedate = new ArrayList<String>();
ArrayList<String> manufactdate = new ArrayList<String>();
ArrayList<String> exipry = new ArrayList<String>();
ArrayList<String> batchno = new ArrayList<String>();
ArrayList<String> unitprice = new ArrayList<String>();
ArrayList<String> quantity = new ArrayList<String>();
ArrayList<String> Subtotal = new ArrayList<String>();
Map<String, Object> param = new HashMap<String, Object>();
try {
JasperPrint jasperPrint =null;
InputStream is=this.getClass().getResourceAsStream("/com/medicam/servlets/Invoice.jrxml");
JasperReport jasperReport = JasperCompileManager.compileReport(is);
for(int i=0;i<prod.length;i++)
{
prodname.add(prod[i]);
packagedate.add(pkgdate[i]);
manufactdate.add(manufact[i]);
exipry.add(exp[i]);
batchno.add(batch[i]);
unitprice.add(unit[i]);
quantity.add(qty[i]);
Subtotal.add(subtot[i]);
System.out.println("Name :"+prod[i]+" Pkg date: "+pkgdate[i]+"Man :"+manufact[i]+" Expi: "+exp[i]+" Batch: "+batch[i]+" Unit: "+unit[i]+" Quan: "+qty[i]+" Sub:"+subtot[i]);
}
param.put("prodname", String.valueOf(prodname));
param.put("pkgdate", String.valueOf(packagedate));
param.put("manfdate", String.valueOf(manufactdate));
param.put("expdate", String.valueOf(exipry));
param.put("batch", String.valueOf(batchno));
param.put("unit", String.valueOf(unitprice));
param.put("qty", String.valueOf(quantity));
param.put("subtot", String.valueOf(Subtotal));
jasperPrint = JasperFillManager.fillReport(jasperReport, param, new JREmptyDataSource());
JasperViewer.viewReport(jasperPrint, false);
}
catch (Exception e) {
e.printStackTrace();
}
Sring 数组用于填充传递给 HashMap 以填充我的报告的 ArrayList。 HasMap 键是在 Invoice.jrxml 文件中声明的参数名称 参数名称被赋予文本文件,如
<textField>
<reportElement x="-1" y="60" width="80" height="101" uuid="06fab25e-d80f-4535-8d85-1bea04dfca84"/>
<textElement textAlignment="Center"/>
<textFieldExpression><![CDATA[$P{prodname}]]></textFieldExpression>
</textField>
我想打印项目列表,但我得到的输出是逗号分隔的值 单行。
示例输出here 和下图。
【问题讨论】:
标签: java jasper-reports