Wie wird Excel mit JSP angezeigt, wobei vermieden wird, dass dem Exporteur keine Eingabequelle zur Verfügung gestellt wird?

Ich habe einen Code geschrieben, der Excel auf einer Website anzeigt.

Aber ich bekomme diese Ausnahme

net.sf.jasperreports.engine.JRRuntimeException: Dem Exporter wurde keine Eingabequelle bereitgestellt.

Mein 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 zum Exportieren nach 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);
        }
    %>

Wie kann das behoben werden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage