使用grails中的方法调用生成jasper报告

时间:2016-03-24 13:12:06

标签: grails jasper-reports jasper-plugin

我知道,通过使用<g:Jasper>标记,我可以生成grails报告,但我想将生成的报告直接保存到文件夹中,主要是使用方法,对于任何人有任何想法

2 个答案:

答案 0 :(得分:2)

让我们说您的控制器con和方法met执行jasper报告导出。并在params中传递一些参数。我们说参数是name, reportFile, 'date 然后,您可以通过以下任何位置调用此链接来导出报告:

http://yourDomain.com/con/met?name=myName&date=21-11-2012&reportFile=fileName

例如:我最近使用此链接导出了一个jasper报告:

http://localhost:9096/WebSite/agent/agentTouchExport?_format=XLSX&_name=Export+to+xlsx&_file=AgentTouchReport&distributorWallet=&srWallet=&agentWallet=&businessRegionId=0&businessAreaId=0&businessTerritoryId=0&fromDate=2017-01-01&toDate=2017-02-03

答案 1 :(得分:1)

我希望您要求将jasper生成的报告保存到文件中。这很简单。您可以从jasper获取报告内容(作为byet数组)。然后只需将内容保存到文件中。下面给出一个例子 -

JasperService jasperService;

def saveReport(GrailsParameterMap params, Locale locale, List<DataModel> models) {
    // Prepare data
    List searchReportSheet = new ArrayList();
    LinkedHashMap<String, Object> searchSheetMap;
    models.each {
        searchSheetMap = new LinkedHashMap<String, Object>();
        searchSheetMap.put("key", it.keyValue);
        ...............
        ...............
        searchReportSheet.add(searchSheetMap);
    }

    // Call jasper for generate report
    def reportDef = jasperService.buildReportDefinition(params, locale, [data: searchReportSheet]);

    // Save to File
    def content = reportDef.contentStream.toByteArray();
    FileOutputStream fileOuputStream = new FileOutputStream(fileDest)
    fileOuputStream.write(content);
}