2014-02-14 61 views
1

我正在使用SharePoint(2013)事件接收器來監視何時將文件添加到文檔庫。每次檢入文件時,如果它是一個MS Office文檔,我想閱讀它的自定義屬性並根據需要修改它們(基本上,我希望將其歷史記錄保存在文件中)。SharePoint服務器讀寫office 2003二進制文件自定義屬性

我能夠使用openXML爲最近的辦公文檔(2007年以後)做到這一點。一個小例子來說明如何我讀一個.docx文件(從SPFILE)是:

SPSecurity.RunWithElevatedPrivileges(delegate() 
     { 
      byte[] byteArray = File.OpenBinary(); 
      using (MemoryStream mem = new MemoryStream()) 
      { 
       mem.Write(byteArray, 0, (int)byteArray.Length); 
       try 
       { 
        using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(mem, true)) 
        { 
         CustomFilePropertiesPart cp = wordDoc.CustomFilePropertiesPart; 

這似乎工作的偉大,後來我可以在使用savebinary寫入文件中修改後自定義屬性。

我的問題是,我想能夠爲Office 2003文檔(.doc,.xls,.ppt)做同樣的事情。我發現DSOFile,但問題是我無法使用標準的「打開」功能來訪問該文件,因爲我在服務器上。

我的問題是 - 如何在C#中的Sharepoint農場解決方案中讀寫office 2003 .doc/.xls/.ppt的自定義屬性,理想情況下使用DSOFile,但我願意接受任何解決方案。

在此先感謝,並請讓我知道是否有任何其他信息將證明有用。

回答

1

看起來我能回答我自己的問題,並想分享可能出現的其他人的答案。

將SharePoint中的文件加載到SPFile時,可以訪問實際上包含二進制Office文件的自定義屬性的數組File.Properties。你可以使用File.AddProperty來包含新的屬性,或者簡單地設置它們就像設置任何數組一樣,其中鍵是屬性名稱。運行File.Update()將同步文件屬性。