轉帖|其它|編輯:郝浩|2010-12-13 14:36:18.000|閱讀 2113 次
概述:OWC(Office Web Component)是微軟提供的一組Activex組件,其中的PivotTable控件提供了數據透視的功能。OWC既可以在WinForm程序中使用,也可以在嵌入在IE中使用。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
OWC(Office Web Component)是微軟提供的一組Activex組件,其中的PivotTable控件提供了數據透視的功能。OWC既可以在WinForm程序中使用,也可以在嵌入在IE中使用。
一、 安裝
如果系統中已經安裝了Office 2003,則系統已經自動安裝好OWC11.0了,否則可以從網上下載安裝包來安裝。安裝完成后可以在C:\Program Files\Common Files\Microsoft Shared\Web Components\11\2052目錄下找到OWC的幫助和API參考手冊。不過其中的API手冊是及其難用。
二、. 嵌入到瀏覽器中使用
將以下代碼加入到源程序中即可,控件的大小也可以使用CSS來控制。
<object id="PivotTable1" style="margin: 5px;" classid="clsid:0002E55A-0000-0000-C000-000000000046">
</object>
上面的是OWC11版本的控件,如果是其它的版本,則它的Classid是不一樣的。可以在注冊表中查找PivotTable來找到該控件相應的classid.
PivotTable自身帶有工具欄,右鍵菜單,還可以在運行時通過對話框來配置控件,方便了用戶的使用。不過有時我們希望只提供給用戶受限的功能,比如隱藏工具欄和菜單什么的。這可以通過控件提供的一組屬性來控制,這些屬性包括:
三、數據源
通過給PivotTable的DataSource屬性賦值來指定它的數據源。PivotTable控件支持多種數據源。
對于后兩種數據源,我沒有試過,就不說了。下面只以關系數據庫為例。由于我是在IE中使用PivotTable控件的,所以只能使用離線數據。基本的思路是
客戶端的腳本示例如下:
var xml = ...; // 從服務器端發過來的Xml文本
var rs = new ActiveXObject('ADODB.Recordset');
var doc = new ActiveXObject('MSXML2.DOMDocument');
doc.loadXML(xml);
rs.Open(doc);
PivotTable1.DataSource = rs;
但是且慢,還有一個問題要解決。現在我的服務器是基于Asp.net的,所有數據庫訪問也是基于ADO.net的,而不是ADO。ADO.Recordset和DataSet都可以直接保存為Xml文件,但不幸的是,它們的格式是不兼容的。要解決這個問題,要么在服務器端使用ADO來訪問數據,要么想辦法將DataSet的保存為和Recordset相容的XML格式文檔。經過一番Baidu,發現微軟的一篇文章,點擊這兒查看原文。文章所列的VB.net 代碼如下:
DataSet 轉換為 Recordset
所以,基本上服務器端的代碼就變成了下面這樣(C#代碼):
DataTable table = pt.Query("userName");
var convert = new ConvertToRs();
DataSet dataSet = new DataSet();
dataSet.Tables.Add(table);
var xml = convert.GetADORS(dataSet, "db");
Response.Clear();
Response.ContentType = "text/xml";
Response.Write(xml);
Response.End();
四、設置透視字段
設置好數據源后,就要設置相關的字段了。有四種字段:
這個步驟比較簡單
通過PivotTable.ActiveView.FieldSets屬性可以訪問到所有的FieldSet對象,可以通過字段名稱來獲得相應的Fieldset對象。然后使用ActiveView.RowAxis.InsertFieldSet方法增加一個行字段。相應的通過ColumnAxis,DataAxis,PageAxis的InsertFieldSet方法來設置字段。
五、設置匯總的顯示方式
字段的匯總可以以多種方式顯示。
可以通過PivotTotal對象的ShowAs屬性指定匯總的顯示方式,ActiveView.DataAxis.Totals集合中包含了所有的PivotTotal對象。
OWC中的PivotTable控件的功能非常強大,不過它的模型也比較復雜,加上自帶的示例比較少,所以我也只是簡單的使用,還有一些問題沒能解決。下面一張PivotTable在IE中的使用的實例截個圖:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載