2016-03-24 2 views
1

Я знаю, используя тег <g:Jasper>. Я могу генерировать отчет в grails, но я хочу сохранить отчет, сгенерированный непосредственно в папку, в основном с использованием метода. У вас есть какая-либо идея относительно этоСоздание отчета о яшме с помощью вызова метода в grails

ответ

2

Предположим, что ваш контроллер con и метод met выполняют экспорт отчета о яшме. И в params вы передаете некоторые параметры. Предположим, что параметры: name, reportFile, 'date.
Тогда вы можете получить экспорт отчетов по телефону по этой ссылке с любого где:

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

Например: Я недавно экспортировал отчет яшма по этой ссылке:

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

Я надеюсь, что вы просите сохранить отчет, сгенерированный jasper, в файл. Это легко. Вы можете получить содержимое отчета (как массив байтов) из яшмы. Затем просто сохраните содержимое в файл. Пример приведен ниже:

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); 
}