注明:最近很多朋友跟我要源碼,其實很簡單的東西,自己嘗試一下很快就解決了,目前我在外地出差,不能提供源代碼下載,我不再傳源碼,請見諒。
在云南期間,收到幾個朋友的郵件,希望發工程代碼,因為我在云南,沒有帶本子,說聲抱歉!
因為項目需要,前幾天完成了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
工廠類里添加對此支持的判斷分發實現即可。