将参数发送到Jasper Report并导出到没有数据库的.docx

时间:2015-11-24 04:13:46

标签: java jasper-reports docx

我很难找到正确的最新信息。我发现的大多数信息都使用了不再使用的弃用方法。

我的程序允许用户在数据库中搜索某个人,在表中单击他们想要的人,从表中加载数据行,并将其存储到数组中。然后将该数组分解为变量,然后传递给此PrintCertificate()类,其中所有参数都传递到我在Studio中创建的.jrxml Jasper报告中,并填写证书的空白部分

 package print;
 import net.sf.jasperreports.engine.*;
 import net.sf.jasperreports.engine.export.*;
 import java.util.*;

public class PrintCertificate  
{   
public PrintCertificate(String output, String certType, String name, String pNames, String bapDate, String confirmDate, String pastorName, String sponsorName)
{
    if(certType=="rci_eng")
    {
        String fileName = "/RCI_Eng";
        output = "C:/Users/User/Desktop/Test/";

        HashMap<String, Object> param = new HashMap<String, Object>();
        param.put("Full_Name",name);
        param.put("Parent_Names", pNames);
        param.put("DateOfBaptism", bapDate);
        param.put("PastorName", pastorName);
        param.put("SponsorName", sponsorName);
        try
        {
            JasperPrint print = JasperFillManager.fillReport(fileName, param);

            JRDocxExporter exporter = new JRDocxExporter();
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
            exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "test.docx");
            exporter.exportReport(print);

        }
        catch (Exception e)
        {
            e.printStackTrace();
            System.exit(1);
        }
    }
}

}

我显然知道很多这已经不对了,包括输出和OUTPUT_FILE_TYPE,但我需要知道我是否在正确的轨道上,如果有什么我可以用来使这更容易。

1 个答案:

答案 0 :(得分:0)

问题,如果我在正确的轨道上?有点宽泛

你可以使用参数图* ,你可以使用jasper报告中的查询(参见@MadProgrammer评论),你可以直接传递你的{{1} } 作为数据源。

*注意:使用参数地图,您不会在详细信息区域中放置任何数据,并且您只能创建1个经过认证的数据。

哪个最好?,在jasper报表中执行查询或传递参数可能具有在开发报表时预览的优势,因此您可以设置默认值;使用PrintCertificate类作为数据源的优点是可以轻松地格式化/处理输出(因为jasper将调用类中的方法)。

&#34;正常&#34;方式将在jasper报告中执行一个查询,将PrintCertificate作为参数传递(因此查询将找到相对于您要查看的人的1条记录)。这些字段由IDE自动生成,您可以轻松地为不同的人测试它,您可以轻松更改查询以导出多个证书ecc。

但最终选择是你的......

你哪儿不在正确的轨道上?(这就是我回答的原因)

JRExporterParameter 已弃用,因为jasper版本5.6

自此版本以来的正确方法是:

idperson