如何使用jsp避免不顯示“沒有輸入源提供給導出器”以顯示excel
如果您使用的不是JasperReports的舊版本,則使用不推薦使用的方法,最重要的是,您不會將其傳遞JasperPrint給導出器。
沒有輸入源提供給出口商。
您需要 ,使用JasperFillManager.fillReport
JasperDesign jasperDesign = JRXmlLoader.load(new FileInputStream(reportFile));JasperPrint jasperPrint = JasperFillManager.fillReport(jasperDesign, parameters, conn);JRXlsExporter exporter = new JRXlsExporter();exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); //The JasperPrint, filled reportexporter.setExporterOutput(new SimpleOutputStreamExporterOutput(xlsReport)); //Your ByteArrayOutputStreamSimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration();configuration.setonePagePerSheet(true);configuration.setDetectCellType(true);configuration.set //The other properties you like to setexporter.setConfiguration(configuration);exporter.exportReport();解決方法
我已經編寫了一些代碼來在網站上顯示excel。
但是我得到這個例外
net.sf.jasperreports.engine.JRRuntimeException:沒有輸入源提供給導出器。
我的密碼導入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代碼導出到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,bytes.length); outStream.flush(); outStream.close();} catch (Exception ex) { out.println('Error ' + ex);} %>
如何解決?
相關文章: