如何使用jsp显示excel,避免“没有输入源提供给导出器”。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用jsp显示excel,避免“没有输入源提供给导出器”。相关的知识,希望对你有一定的参考价值。
我已经编写了一些代码来展示网站中的excel。
但我得到了这个例外
net.sf.jasperreports.engine.JRRuntimeException:没有提供给导出器的输入源。
My code
在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,0,bytes.length);
outStream.flush();
outStream.close();
} catch (Exception ex) {
out.println("Error " + ex);
}
%>
怎么解决这个问题?
答案
如果您没有使用旧版本的JasperReports,那么您使用的是弃用方法,最重要的是,您没有将JasperPrint
传递给导出器。
没有输入源提供给导出器。
您需要使用JasperFillManager.fillReport
填写报告
示例代码(jasper报告v5或更高版本)
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 report
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(xlsReport)); //Your ByteArrayOutputStream
SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration();
configuration.setOnePagePerSheet(true);
configuration.setDetectCellType(true);
configuration.set //The other properties you like to set
exporter.setConfiguration(configuration);
exporter.exportReport();
以上是关于如何使用jsp显示excel,避免“没有输入源提供给导出器”。的主要内容,如果未能解决你的问题,请参考以下文章
你好! 请教你个问题 java web程序如何将读取的excel表格里的数据插入到数据库,并显示在JSP页面上?