国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

如何在ASP.NET中用OWC繪制圖表(1)

2024-07-10 12:55:21
字體:
供稿:網(wǎng)友
如何在asp.net中用owc繪制圖表 (1)

一、概述

二、設(shè)置圖表引擎

三、owc的許可證問題

四、owc的運(yùn)行機(jī)制

五、在web服務(wù)器上安裝owc 10

六、owc編程模式

━━━━━━━━━━━━━

正文:

━━━━━━━━━━━━━

一、概述

在開發(fā)應(yīng)用程序時(shí),經(jīng)常會(huì)遇到必須提供交互式圖表的情況。例如,你可能在開發(fā)一個(gè)管理銷售和產(chǎn)品數(shù)據(jù)的應(yīng)用程序,數(shù)據(jù)保存在sql server數(shù)據(jù)庫上,應(yīng)用程序允許用戶添加數(shù)據(jù)、更新現(xiàn)有數(shù)據(jù),但除了這些功能之外,客戶還要求應(yīng)用程序能夠用餅圖、柱形圖或xy散點(diǎn)圖的形式直觀地描述數(shù)據(jù)。

在windows桌面應(yīng)用程序中,這類要求從來不成為問題,可供選用的圖形庫和繪圖組件實(shí)在太多了。但對于web應(yīng)用程序,問題就變得復(fù)雜多了。要在web應(yīng)用中繪制圖表,可供選擇的辦法包括:

■ 客戶端:

利用各種activex組件,web瀏覽器內(nèi)完全有可能達(dá)到“豐富”windows客戶程序那樣的功能。缺點(diǎn)是客戶端的設(shè)置復(fù)雜化,要求發(fā)布客戶端軟件,通常按照每客戶端的方式計(jì)算許可證費(fèi)用。另外,非ms windows/ie的客戶端一般難以運(yùn)行。

■ 服務(wù)器端:

利用web服務(wù)器上運(yùn)行的服務(wù)器端代碼,動(dòng)態(tài)地生成圖表,然后以gif或jpg圖形的形式發(fā)送給客戶端。這種辦法的優(yōu)點(diǎn)是,客戶端只需要一個(gè)標(biāo)準(zhǔn)的瀏覽器。與客戶端技術(shù)相比的缺點(diǎn)是,圖形的交互能力差(除非向服務(wù)器提交新的請求,否則就不能縮放、滾動(dòng))。許多地圖網(wǎng)站(例如mapquest.com)大量地運(yùn)用了這一技術(shù)。注意,地圖圖形不是保存在web服務(wù)器上,而是用戶發(fā)出一個(gè)請求時(shí)動(dòng)態(tài)從地圖數(shù)據(jù)庫生成。

本文主要討論如何利用服務(wù)器端的圖表繪制技術(shù)在asp.net web頁面中提供圖形功能,具體地說,本文分析了如何利用ms sql數(shù)據(jù)庫中保存的數(shù)據(jù)生成一個(gè)散點(diǎn)圖。

二、設(shè)置圖表引擎

如果要在asp.net應(yīng)用程序中繪制圖表,必須要有一個(gè)合適的圖表引擎。asp.net有一個(gè)內(nèi)建的圖形工具庫,即system.drawing名稱空間的gdi+,可以用來創(chuàng)建簡單的餅圖、柱形圖、折線圖等,不過它屬于低級的api,算不上繪制圖表的引擎,特別是不適合繪制復(fù)雜的圖表。

asp.net環(huán)境下還有許多商業(yè)化的圖表繪制代碼庫,隨便搜索一下google,就可以找到:

mycos charts .net web forms edition

dundas chart for asp.net

.netcharting

charting controls at the asp.net control gallery

不過,許多產(chǎn)品都相當(dāng)昂貴,而且與世界上應(yīng)用最廣泛的圖表繪制工具——excel相比,不免給人以陌生的感覺。ms excel是一個(gè)相當(dāng)強(qiáng)大的圖表引擎,支持的圖表類型非常豐富,而且提供了完備的圖表布局調(diào)整功能。

正因?yàn)槿绱耍员疚囊懻摰闹鹘鞘莖wc,即office web components,或者“office web組件”。按照微軟的定義,owc是一種“將類似office的功能擴(kuò)展到web的微軟技術(shù)”。它可以在客戶端使用,例如我們將excel工作表保存為web頁面時(shí)就要用到,利用它可以方便地將交互式電子表格和圖表發(fā)布到web頁面。同時(shí),owc也是一個(gè)優(yōu)秀的服務(wù)器端圖表引擎,具有與ms excel同樣強(qiáng)大的圖表繪制能力。

三、owc的許可證問題

如果你曾經(jīng)用過版本較早的owc,可能已經(jīng)遇到過微軟的許可證問題。以前這個(gè)問題相當(dāng)令人煩惱,微軟不僅要求服務(wù)器上必須有office許可證,而且每一臺(tái)客戶pc上也同樣要有。

實(shí)際上,這相當(dāng)于將owc的用途局限到了intranet之內(nèi),只有intranet之內(nèi)才可以保證客戶pc上都安裝了office許可證。不過現(xiàn)在微軟的態(tài)度有所放緩——服務(wù)器上仍舊要安裝office許可證,但只要圖表是“非交互式”用途,例如本文的服務(wù)器端圖表繪制,客戶端就不必再裝office許可證。實(shí)際上,就連服務(wù)器端也不必安裝完整的office許可證,excel 2002或frontpage 2002的許可證就已足夠,從而使owc變成了價(jià)廉物美的服務(wù)器端圖表引擎。

那么,在服務(wù)器上安裝ms office?不,沒有必要。雖然從許可證條件看,owc應(yīng)該是office的一部分,但從技術(shù)上說,owc是一個(gè)獨(dú)立的產(chǎn)品。web服務(wù)器上只需安裝owc軟件包,不必安裝整個(gè)office。

owc首次出現(xiàn)于office 2000,即owc 9.0。在office xp中,owc的編程模式已作了修改,這使得owc xp(也就是owc 10)不能與owc 9.0完全兼容。owc 10要求在asp.net環(huán)境中運(yùn)行,所以owc 10軟件包必須安裝到asp.net服務(wù)器上。

接下來,很自然的一個(gè)問題是:哪里可以下載owc 10軟件包?令人驚奇的是,它可以從微軟的網(wǎng)站免費(fèi)下載,地址是http://office.microsoft.com/downloads/2002/owc10.aspx,
(中文地址:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&familyid=982b0359-0a86-4fb2-a7ee-5f3a499515dd 網(wǎng)際浪子注)但要注意的是,web服務(wù)器上必須安裝了某種office 2002的許可證才能合法地使用owc 10。

四、owc的運(yùn)行機(jī)制

owc是一組com(activex)控件的集合,涵蓋電子表格、圖表、數(shù)據(jù)透視表等功能。它經(jīng)常被當(dāng)作客戶端技術(shù)使用,這時(shí)com控件就安裝在客戶端pc上。如果在服務(wù)器端使用,人們主要感興趣的是它的圖表繪制功能。

有了owc,我們可以在asp.net web服務(wù)器上動(dòng)態(tài)創(chuàng)建一個(gè)圖表,然后將圖表以gif圖形的形式發(fā)送到客戶端??蛻舳丝吹降膬H僅是一個(gè)普通的圖形文件,但在“背后”,圖形文件實(shí)際上是由服務(wù)器上asp.net回應(yīng)客戶請求時(shí)動(dòng)態(tài)生成的。因此,這種技術(shù)對客戶端沒有特殊的要求,只要能夠顯示gif圖形就可以了,即使netscape和opera也不存在任何問題。

既然如此,為什么在asp.net開發(fā)領(lǐng)域中,owc這一優(yōu)秀的微軟技術(shù)尚未被廣泛采用呢?微軟根本不為owc作市場宣傳,再加上令人迷惑的許可證問題,當(dāng)然令許多開發(fā)者望而卻步。也許微軟認(rèn)為該產(chǎn)品還沒有完全成熟,即將到來的office 2003將會(huì)帶來owc 11,它的編程模式還會(huì)有所改變。另外,還有一種可能是微軟擔(dān)心owc技術(shù)的廣泛采用會(huì)影響office的銷售。

再者,關(guān)于owc的編程實(shí)例很少。微軟知識(shí)庫有幾個(gè)客戶端的例子和“傳統(tǒng)”asp的服務(wù)器端例子,但找不到在asp.net環(huán)境中使用owc 10的例子。owc的新聞組,microsoft.public.office.developer.web.components,主要討論的也是客戶端的應(yīng)用。如果你要在asp.net環(huán)境中使用owc 10,主要還是靠自己摸索。正是因?yàn)檫@些原因,所以本文從相當(dāng)廣泛的角度探討了該技術(shù)的實(shí)際應(yīng)用。

五、在web服務(wù)器上安裝owc 10

要想在asp.net web服務(wù)器上用owc繪制圖表,首先應(yīng)當(dāng)安裝必要的軟件和修改一些配置。

第一,web服務(wù)器上當(dāng)然應(yīng)該有asp.net運(yùn)行環(huán)境。除了.net framework redistributable,還要有g(shù)acutil程序(屬于.net框架sdk)來配置owc控件,也就是說,還要安裝.net framework sdk工具。如果把.net framework 1.1 redistributable和sdk安裝到了默認(rèn)目錄,path環(huán)境變量的內(nèi)容應(yīng)當(dāng)包含:c:/windows/microsoft.net/framework/v1.1.4322;c:/program files/microsoft.net/sdk/v1.1/bin。

接下來再在web服務(wù)器上安裝owc 10。owc可以從微軟免費(fèi)下載,安裝時(shí)只要采用所有默認(rèn)選項(xiàng)即可。

由于owc 10是一種com技術(shù),為了讓.net代碼使用owc 10組件,還必須安裝office xp的primary interop assembly(pia),pia可以從微軟網(wǎng)站下載(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnoxpta/html/odc_oxppias.asp)。
(網(wǎng)際浪子發(fā)現(xiàn)的地址是:http://www.microsoft.com/downloads/details.aspx?familyid=c41bd61e-3060-4f71-a6b4-01feba508e52&displaylang=en)
下載得到的oxppia.exe是一個(gè)壓縮文件,現(xiàn)在把它解壓縮到服務(wù)器上的一個(gè)目錄,假設(shè)是c:/oxppia,然后啟動(dòng)一個(gè)命令窗口(注意,確保path環(huán)境變量已正確設(shè)置[網(wǎng)際浪子注:可以用我作的setpath.bat運(yùn)行一下]),轉(zhuǎn)到c:/oxppia目錄,運(yùn)行register.bat。

這個(gè)命令把office xp pia導(dǎo)入到全局程序集緩沖區(qū),修改注冊表設(shè)置。注意觀察register.bat命令的輸出,確信gacutil命令確實(shí)在運(yùn)行。如果path環(huán)境變量設(shè)置有誤,pia不可能正確導(dǎo)入。readme文檔說應(yīng)當(dāng)用vs.net命令行環(huán)境,但web服務(wù)器上可能沒有安裝vs.net,這時(shí)就要手工修改path環(huán)境變量了(效果一樣)。

最后,還要把下面這行代碼加入web服務(wù)器的machine.config文件的<assemblies>節(jié),對于.net framework 1.1,machine.config文件可以在c:/windows/microsoft.net/framework/v1.1.4322/config目錄下找到:


<add assembly="microsoft.office.interop.owc, version=10.0.4504.0,
     culture=neutral, publickeytoken=31bf3856ad364e35"/>


浪子注明:如果發(fā)生不能編譯的錯(cuò)誤,可能要再次運(yùn)行注冊步驟!我這里這樣,大家如果不一樣,可以自己試試。

六、owc編程模式

為了在asp.net頁面中顯示一個(gè)owc圖表,我們將創(chuàng)建一個(gè)簡單的asp.net頁面,該頁面的唯一用途就是顯示圖表。web頁面的名稱是getchart.aspx。要在web頁面中顯示出圖表,可以用一個(gè)標(biāo)準(zhǔn)的html <img>標(biāo)記,如下所示:



<img src="getchart.aspx" />





getchart.aspx頁面在服務(wù)器上動(dòng)態(tài)生成owc圖表,然后把圖表轉(zhuǎn)換成gif圖形發(fā)送給客戶端。因此,在客戶端看來,getchart.aspx就相當(dāng)于一個(gè)gif圖形。

下面我們分析一下getchart.aspx文件。如果使用asp.net的codebehind機(jī)制,getchart.aspx實(shí)際上只要數(shù)條asp.net指令:



<%@ page language="vb" autoeventwireup="false"
codebehind="getchart.aspx.vb" inherits="getchart"%>
<%@ outputcache duration="5" varybyparam="none" %>




要生成圖表的數(shù)據(jù)稱為數(shù)據(jù)原,chart component組件支持的數(shù)據(jù)源有:實(shí)現(xiàn)idatasource接口的任何數(shù)據(jù)源;ado recordset對象;xml文件;數(shù)組或者一定格式的文本字符串。在asp中,我們可以用ado recordset對象;在.net的ado.net中,由于ado.net沒有實(shí)現(xiàn)idatasource,.net也沒有提供ado.net dataset對象向ado recordset對象的直接轉(zhuǎn)換,如果你有一個(gè) dataset對象,你要么轉(zhuǎn)換成xml文件,要么生成特殊格式的字符串才可以使用。下面就是本例子的結(jié)果:



[浪子注明:如果出錯(cuò),可能是文件夾權(quán)限的問題,我的就是,要將虛擬目錄的everyone的全部權(quán)限加上!]



下面是實(shí)現(xiàn)這種功能的vb.net版本的asp.net例子與代碼:

owc.aspx:

<%@ page language="vb" autoeventwireup="false" codebehind="owc.aspx.vb" inherits="aspxweb.owc"%>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en" >
<html>
  <head>
    <title>webform1</title>
    <meta name="generator" content="microsoft visual studio 7.0">
    <meta name="code_language" content="c#">
    <meta name="vs_defaultclientscript" content="javascript">
    <meta name="vs_targetschema" content="http://schemas.microsoft.com/intellisense/ie5">
  </head>
  <body ms_positioning="gridlayout">
    <form id="form1" method="post" runat="server">
      <asp:placeholder id="chartholder" runat="server"></asp:placeholder>
    </form>
  </body>
</html>
國內(nèi)最大的酷站演示中心!
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 邛崃市| 论坛| 应用必备| 盐池县| 会宁县| 阿图什市| 深泽县| 东山县| 西安市| 永胜县| 宝坻区| 鹿邑县| 建平县| 波密县| 搜索| 砚山县| 页游| 留坝县| 中卫市| 会宁县| 呼图壁县| 潜山县| 新余市| 枣阳市| 兴国县| 开化县| 渭源县| 益阳市| 房产| 通山县| 巨鹿县| 政和县| 桂平市| 鄂托克旗| 泸水县| 太保市| 马山县| 紫金县| 玉溪市| 德格县| 安义县|