【sunmoonfire 】在SharePoint中編寫呼叫Excel Services的Filter Consumer WebPart

iDotNetSpace發表於2008-07-09
本文將舉例說明如何在wssv3中建立一個Filter consumer WebPart 來顯示頭條新聞。這些頭條新聞內容依賴於地理區域的篩選提供者WebPart中使用者的選擇。頭條新聞WebPart將通過呼叫Microsoft Excel Services從一個Excel工作簿中得到。

下面是建立filter consumer WebPart的五大步驟
  1. 在Visual Studio 2005中建立一個web control library專案。
  2. 新增到Microsoft.SharePoint.dll的引用。
  3. 設定assembly的版本號。
  4. 為assembly新增強命名。
  5. 編寫頭條新聞filter consumer webpart的程式碼。

在Visual Studio 2005中建立一個web control library專案

建立一個filter consumer WebPart最簡單的方式是套用Visual Studio 2005的自定義Web控制元件模板。

下面是建立的步驟:

  1. 檔案->新建->專案,出現新建專案對話方塊。
  2. 在專案型別中,選擇C#,選擇Windows類別。
  3. 在模板選擇中,選擇web控制元件庫。
  4. 為專案指定一個名稱NewsHeadlinesWebPart
  5. 指定儲存的位置,確定。現在,專案中包含一個名為WebCustomControl1.cs的程式碼檔案。
  6. 在解決方案瀏覽器中右擊該檔案,選重名名。將該檔案重新命名為NewsHeadlinesWebPart.cs。

新增必要的程式集的引用


我們將要編寫的頭條新聞篩選消費者WebPart是要從Microsoft.SharePoint.WebPartPages.WebPart類繼承而來。因此,必須新增Windows SharePoint Services的程式集;由於使用到了Excel Services,還要引用Excel Services的程式集,以便允許使用其中的類。
下面的步驟是展示瞭如何直接連線到Excel Web Serivces庫。之所以如此是因為頭條新聞WebPart執行域SharePoint環境中,這與使用SOAP通過HTTP訪問Web service的方式不同。在我們的這種場景下直接連線可以提供更高的效能和安全性,並允許我們的頭條新文WebPart可以工作在所有的SharePoint拓撲結構下。而當我們建立獨立的Web應用程式(Web應用程式並不執行在SharePoint中)時,實際上是真正用到Web service的介面。關於何時選擇使用SOAP方式通過HTTP訪問,何時直接連線到Excel Web Services DLL,您可以參考這篇MOSS SDK文章:Loop-back SOAP Calls and Direct Linking
如果Visual Studio執行在Office SharePoint Server 2007伺服器上,請以下面的步驟進行引用:

  1. 專案->新增引用,出現新增引用對話方塊。
  2. 點選.NET標籤,選擇Excel Web Service 元件(Microsoft.Office.Excel.Server.WebServics.dll)。接著向下滾動,找到Windows SharePoint Services元件(Microsoft.SharePoint.dll),按住Ctrl鍵,再選擇。
  3. 確定,完成引用的新增。

如果Visual Studio與Office SharePoint Server 2007不在同一臺機器上,我們需要從一臺裝有Office SharePoint Server 2007的機器上拷貝該檔案到我們的開發環境所在機器的專案資料夾下。預設情況下,Microsoft.SharePoint.dll和Microsoft.Office.Excel.Server.WebServics.dll位於裝有SharePoint的機器的以下目錄中:

C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12ISAPI 

拷貝過來後,將這兩個檔案新增到引用中。

新增到本地拷貝的程式集的引用

  1. 專案->新增引用,出現新增引用對話方塊。
  2. 點選瀏覽,導航到放Windows SharePoint Services和Excel  Web Service程式集檔案的目錄
    選中Microsoft.SharePoint.dll 和Microsoft.Office.Excel.Server.WebServices.dll 檔案。
  3. 確定,完成引用的新增。

如果要使Excel Web Service正常工作,還需要新增到System.Web.Services程式集的引用: 

  1. 專案->新增引用,出現新增引用對話方塊。
  2. 點選.NET標籤,選擇System.Web.Services 元件。
  3. 確定,完成引用的新增。

設定WebPart程式集的版本號

預設情況下,自定義Web控制元件專案的AssemblyVersion屬性設為每次重新編譯時自動增加。Web部件頁通過Web.config檔案中註冊的版本號來識別WebPart。如果AssemblyVersion屬性設為每次重新編譯時自動增加,當我們把WebPart匯入到Web部件頁後又重新編譯了該WebPart,就會因為找不到程式集而出錯了。避免字增的方法就是手工指定一個版本號。

為WebPart程式集手工指定版本號

  1. 專案->NewsHeadlinesWebPart 屬性。
  2. 在專案屬性頁面中,點應用程式標籤。
  3. 點程式集資訊
  4. 在程式集資訊對話方塊中,設定版本為1.0.0.0
  5. 確定,儲存。
  6. 關閉專案屬性頁。
為WebPart程式集進行強命名

為了使我們的WebPart可以部署到GAC(global assembly cache)中,供多個應用程式共享,我們必須為WebPart增加強命名。強名稱由一個文字格式的名稱,版本號,地區語言資訊(如果提供了的話)和一個公鑰數字簽名組成。

在Visual Studio中為WebPart強命名

  1. 專案->NewsHeadlinesWebPart 屬性。
  2. 在專案屬性頁面中,點簽名標籤。
  3. 在選擇一個強名key檔案處,點新建。
  4. 在建立強命名key檔案對話方塊中,填寫keypair檔名。取消下面的使用密碼保護我的金鑰的選擇框。
  5. 關閉專案屬性頁。

實現頭條新聞Filter Consumer WebPart

下面我們將建立一個類實現頭條新聞篩選消費者部件。在程式碼檔案頭部新增下列引用。

using wsswebparts = Microsoft.SharePoint.WebPartPages;
using aspnetwebparts = System.Web.UI.WebControls.WebParts;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Collections.ObjectModel;
using Microsoft.Office.Excel.Server.WebServices;

引用這些名稱空間可以使我們方便的使用其中的類庫和型別,而不必通過使用完整的名稱空間路徑來訪問。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-374714/,如需轉載,請註明出處,否則將追究法律責任。

相關文章