At first create a Grails project
Install jasper plugin as below-
– Ctrl+Alt+G
– install-plugin jasper
– Enter
write it in view page-
<g:form controller=”payrollReport” action=”yearlySalaryRegister” >
<table id=”ySalReg” style=”display:none” width=”415″ border=”0″ >
<tr>
<td width=”96″> </td>
<td width=”19″></td>
<td width=”286″></td>
<td></td>
</tr>
<tr>
<td>Year</td>
<td>:</td>
<td>
<g:textField name=”year” id=”year” value=”” required=”” maxlength=”4″ style=”width:85px;”></g:textField>
</td>
<td style=”width:175px;color: red;” id=”year5MsgTd” align=”left”></td>
</tr>
<tr>
<td>Department</td>
<td>:</td>
<td>
<g:textField name=”P_DEPARTMENT_ID” id=”P_DEPARTMENT_ID” value=”” required=”” style=”width:130px;”>
</td>
<td id=”P_DEPARTMENT_ID5MsgTd” style=”color: red” align=”left”></td>
</tr>
<tr>
<td colspan=”4″ align=”center”> </td>
</tr>
<tr>
<td colspan=”4″ align=”center”>
<g:submitButton name=”View Report” style=”width: 250px” onmouseover=”this.style.color = ‘#E6443C’;this.style.cursor=’pointer’;” onmouseout=”this.style.color = ‘#024697’;this.style.cursor=’pointer'”></g:submitButton>
</td>
</tr>
</table>
</g:form>
—————————————————————————————————————————————————–
write the below code in controller –
import grails.converters.JSON
import org.codehaus.groovy.grails.plugins.jasper.JasperExportFormat
import org.codehaus.groovy.grails.plugins.jasper.JasperReportDef
import org.codehaus.groovy.grails.plugins.jasper.JasperService
import org.springframework.beans.factory.annotation.Autowired
@Autowired
JasperService jasperService
private static final String REPORT_FILE_FORMAT = ‘pdf’
private static final String REPORT_NAME_FIELD = ‘REPORT_NAME’
/*private static final String REPORT_FOLDER = ‘storeInFromSite’*/
private static final String SUB_REPORT_FOLDER = ‘subReport’
private static final String OUTPUT_FILE_NAME = ‘roleReport’
private static final String REPORT_TITLE = ‘Company Name’
private static final String REPORT_DIR = ‘REPORT_DIR’
private static final String SUBREPORT_DIR = ‘SUBREPORT_DIR’
private static final String JASPER_FILE = ‘userRoleDetails.jasper’
private static final String PDF_EXTENSION = “.pdf”
private static final String REPORT = “report”
def yearlySalaryRegister() {
println params
String P_DEPARTMENT_ID= params.P_DEPARTMENT_ID
String P_YEAR= params.year
String P_SALARY_YEAR=P_YEAR
String P_SALARY_AND_ALLOWANCE_MONTH=P_YEAR
String reportDir = Util.getReportDirectory()
String outputFileName = ‘YEARLY_SALARY_REGISTER’ + PDF_EXTENSION
String subReportDir = Util.getReportDirectory() //+ File.separator + SUB_REPORT_FOLDER
Map reportParams = new LinkedHashMap()
reportParams.put(REPORT_DIR, reportDir)
reportParams.put(SUBREPORT_DIR, reportDir)
reportParams.put(‘P_DEPARTMENT_ID’, P_DEPARTMENT_ID.trim())
reportParams.put(‘P_SALARY_YEAR’, P_SALARY_YEAR.trim())
reportParams.put(‘P_SALARY_AND_ALLOWANCE_MONTH’, P_SALARY_AND_ALLOWANCE_MONTH)
JasperReportDef reportDef = new JasperReportDef(name: ‘YEARLY_SALARY_REGISTER.jasper’, fileFormat: JasperExportFormat.PDF_FORMAT,
parameters: reportParams, folder: reportDir)
ByteArrayOutputStream report = jasperService.generateReport(reportDef)
response.contentType = “application/pdf”
response.setHeader(“Content-disposition”, “attachment;filename=”+outputFileName) //OUTPUT_FILE_NAME+PDF_EXTENSION)
response.outputStream << report.toByteArray()
}
————————————————————————————————————————————————————–
create a Util class as below-
package accounts
import java.text.ParseException
import java.text.SimpleDateFormat
import org.codehaus.groovy.grails.commons.ApplicationHolder
class Util {
private static String REPORT_DIRECTORY = null;
public static String getReportDirectory() {
if (!REPORT_DIRECTORY) {
File reportFolder = ApplicationHolder.application.parentContext.getResource(‘/reports’).file;
REPORT_DIRECTORY = reportFolder.absolutePath;
}
return REPORT_DIRECTORY;
}
}
———————————————————————–
put all report in “report” folder and put the report folder in “\web-app” folder
Leave a comment