注明:最近很多朋友跟我要源码,其实很简单的东西,自己尝试一下很快就解决了,目前我在外地出差,不能提供源代码下载,我不再传源码,请见谅。
在云南期间,收到几个朋友的邮件,希望发工程代码,因为我在云南,没有带本子,说声抱歉!
因为项目需要,前几天完成了fusioncharts的基本使用,但是还不能满足项目需求。
项目中需要实现按照客户的需求导出指定格式的文件,而且可以图表混编等,这就需要自己去扩展fusioncharts本身的导出。
下面简单介绍如何在服务器端使用JSP导出各种文件格式,并能自由扩展。因为时间比较紧,写的很凌乱,希望大家理解。
在J2EE框架下用JSP导出文件
1.将 exportAtClient导出属性设置为0(服务器导出),exportHandler设置为'exp.jsp'。
可以在chart.exportChart({exportFormat:'pdf',exportHandler:'exp.jsp',exportFileName:'test',exportParameters:'test'});设置,也可以在XML里设置。(注意在JS里设置会重写XML里面的导出属性设置)
2.exp.jsp为处理数据的文件,可实现各种文件格式的导出。
<%@ page language="java" import="com.hjtp.incas.chart.*" pageEncoding="utf-8"%>
<%@ page import="com.hjtp.incas.chart.helper.*"%>
<%@ page import="com.hjtp.incas.chart.exporthelper.*"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>导出图片</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<%
try
{
ExportHelperBean exportHelperBean=FusionChartsExportHelper.parseExportRequestStream(request);
ExportFactory exportFactory=ExportFactory.getInstance();
String type=(String)exportHelperBean.getExportParameterValue("exportformat");
String fileName = (String)exportHelperBean.getExportParameterValue("exportfilename");
ExportFormat exportFormat=new ExportFormat(type);
String contentType=exportFormat.getContentType();
String fix=exportFormat.getPostfix();
response.reset();
response.setContentType(contentType);
response.addHeader("Content-Disposition","attachment; filename=\""+fileName+"."+fix+"\"");
java.io.OutputStream os=response.getOutputStream();
IFusionCharts iFusionCharts=exportFactory.getFusionCharts(type);
iFusionCharts.export(exportHelperBean,os);
os.flush();
os.close();
out.clear();
out=pageContext.pushBody();
}
catch (Exception e)
{
e.printStackTrace();
}
%>
</body>
</html>
3.如何扩展导出的文件格式为项目所需。
1.自定义导出
将服务器端导出参数设为exportHandler:'exp.jsp',即为使用我们自己
写的导出方式导出。
2.如何扩展自定义导出
(1)在exp.jsp中,可以看到如下两行代码
IFusionCharts iFusionCharts=exportFactory.getFusionCharts(type);
iFusionCharts.export(exportHelperBean,os);
其中exportFactory为一个工厂类,起分发器的作用,通过此类可以根据
扩展实际需求进行自定义扩展。
(2)自定义扩展实现 ,例如像实现对txt文件格式支持的导出,需要在新增加
一个类实现IFusionCharts 接口的export方法即可,同时在exportFactory
工厂类里添加对此支持的判断分发实现即可。
MyEcliplse下工程下载