2008-11-23 82 views
1

我對整個週末都感到沮喪,加上一兩天,所以任何幫助都會得到顯着的讚賞。SharePoint和Office Open XML交互問題

我在編寫一個程序,它可以以編程方式進入SharePoint 2007文檔庫,打開文件,更改文件的內容,然後放回文件。我已經得到了所有,但最後一部分。涉及Office Open XML的原因是,我通過Office Open XML SDK打開文檔並進行修改。我的問題是:我如何從文檔中將它取回到庫中?

問題是我看到的是WordprocessingDocument對象本身沒有保存功能。這可以防止我將它保存到SPFile的SaveBinary函數中。

回答

2

您應該使用流的寫回已更改的OOXML到SPFile中。 我希望這個例子有所幫助!

Stream fs = mySPFile.OpenBinaryStream(); 

using (WordprocessingDocument ooxmlDoc = WordprocessingDocument.Open(fs, true)) 
{ 

    MainDocumentPart mainPart = wordDoc.MainDocumentPart; 
    XmlDocument xmlMainDocument = new XmlDocument(); 
    xmlMainDocument.Load(mainPart.GetStream()); 

    // change the contents of the ooxmlDoc/xmlMainDocument 

    Stream stream = mainPart.GetStream(FileMode.Open, FileAccess.ReadWrite); 
    xmlMainDocument.Save(stream); 
    // the stream should not be longer than the DocumentPart 
    stream.SetLength(stream.Position); 
} 
mySPFile.SaveBinary(fs); 
fs.Dispose(); 
0

昨天我看到一個Andrew Connell的網絡廣播,他從doc庫打開了一個文檔,添加了一個水印並再次保存了該文件。這聽起來像你應該看看網播: https://msevents.microsoft.com/CUI/WebCastRegistrationConfirmation.aspx?culture=en-US&RegistrationID=1299758384&Validate=false

btw我發現,該系列中的所有10個網絡演員都非常好。

+0

我試圖做什麼,他儘可能地做到了。但是,他沒有顯示將該項目放回SharePoint的代碼段!真的很煩人(不是我在指責你,對HIM感到討厭)。 – user29227 2008-11-24 00:42:47