2014-02-14 42 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()将同步文件属性。