JasperReport输出Excel报表

Excel格式:

/**  
* 导出报表  
*   
* @param request  
* @param response  
* @param reportFilePath  
* @param params  
* @param con  
* @param fileName  
* @throws JasperReportException  
*/   
public void export(HttpServletRequest request,
		   HttpServletResponse response, 
		   String reportFilePath, Map params,   
		   Connection con,
		   String fileName) throws JasperReportException {   
	JasperPrint jasperPrint = new JasperPrintWithConnection(reportFilePath, params, con).getJasperPrint();   
	// 将填充完的japserPrint放入session中。   
	request.getSession().setAttribute(BaseHttpServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);   
	// 拿到japserPrintList   
	List jasperPrintList = BaseHttpServlet.getJasperPrintList(request);   
	// 若没有JasperPrintList,则抛出异常   
	if (jasperPrintList == null) {   
	    throw new JasperReportException("在Http Session中没有找到JasperPrint List");   
	}   
	try {   
	    OutputStream ouputStream = response.getOutputStream();   
	    try { 
		response.setContentType("application/xls");   
		response.setCharacterEncoding("UTF-8");   
		if (fileName == null || fileName.equals(""))   
		    response.setHeader("Content-Disposition", "inline; filename=\"noTitle.xls\"");   
		else {   
		    response.setHeader("Content-Disposition", "inline; filename=\""   
			    + URLEncoder.encode(fileName, "UTF-8") + ".xls\"");  

		}   
		// Xls格式的导出器 JRXlsAbstractExport   
		JRXlsAbstractExporter exporter = getXlsExporter();   

		// 在导出器中放入要导出的japserPrintList   
		exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);   

		exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);   
		// 设置Xls的属性   
		exporter.setParameter(JRXlsAbstractExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);   
		exporter.setParameter(JRXlsAbstractExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);   
		// 导出   
		exporter.exportReport();   
	    } catch (JRException e) {   
		e.printStackTrace();   
		throw new JasperReportException("在生成XLS报表时发生错误!");   
	    } finally {   
		if (ouputStream != null) {   
		    try {   
			ouputStream.close();   
		    } catch (IOException ex) {   
		    }   
		}   
	    }   
	} catch (IOException ioe) {   
	    ioe.printStackTrace();   
	    throw new JasperReportException("从Response中取得OutputStream时发生错误!");   
	} 
}   

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值