I have written some code to show excel in a website.
But I'm getting this exception
net.sf.jasperreports.engine.JRRuntimeException: No input source supplied to the exporter.
My code
import in jsp
<%@ page import="java.io.*"%>
<%@ page import="java.sql.Connection"%>
<%@ page import="java.sql.DriverManager"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>
<%@ page import="net.sf.jasperreports.engine.*"%>
<%@ page import="java.io.ByteArrayOutputStream"%>
<%@ page import="net.sf.jasperreports.view.JasperViewer"%>
<%@ page import="net.sf.jasperreports.engine.export.*"%>
jsp code to export to excel
<%
Connection conn = null;
String no1 = request.getParameter("no1");
String no2 = request.getParameter("no2");
System.out.println("get value " + no1 + " " +no2);
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ams2"
,"root","passwd1234");
File reportFile = new File (application.getRealPath("//jasper//report//Blank_A4_2.jasper"));
Map parameters = new HashMap();
parameters.put("no1",no1);
parameters.put("no2",no2);
System.out.println("123 "+parameters);
ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, xlsReport);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE, "C:\\");
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "sample.xls");
exporter.exportReport();
byte bytes[] = new byte[10];
bytes = xlsReport.toByteArray();
response.setContentType("application/vnd.ms-excel");
response.setContentLength(bytes.length);
xlsReport.close();
ServletOutputStream outStream = response.getOutputStream();
outStream.write(bytes,0,bytes.length);
outStream.flush();
outStream.close();
} catch (Exception ex) {
out.println("Error " + ex);
}
%>
How can this be fixed?
If you are not using a very old version of JasperReports, you are using deprecated methods and most importantly you are not passing the
JasperPrint
to the exporter.You need to fill the report, using the
JasperFillManager.fillReport
Example code (jasper report v5 or above)