Вопрос взаимодействия SharePoint и Office Open XML - PullRequest
1 голос
/ 24 ноября 2008

Я был разочарован этим на все выходные, плюс день или два, поэтому любая помощь будет принята с благодарностью.

Я пытаюсь написать программу, которая может программно перейти в библиотеку документов SharePoint 2007, открыть файл, изменить содержимое файла, а затем вернуть его обратно. Я получил все, кроме последней части этого. Причина, по которой это связано с Office Open XML, заключается в том, что именно так я открываю и изменяю документ - через Office Open XML SDK. У меня вопрос: как мне вернуть его из документа обратно в библиотеку?

Проблема, как я вижу, заключается в том, что в самом объекте WordprocessingDocument нет функции сохранения. Это мешает мне сохранить его в функцию SaveBinary в SPFile.

Ответы [ 2 ]

2 голосов
/ 24 ноября 2008

Вы должны использовать потоки для записи измененного 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 голосов
/ 24 ноября 2008

Вчера я видел веб-трансляцию с Эндрю Коннеллом, где он открыл документ из библиотеки документов, добавил водяной знак и снова сохранил файл. Похоже, вам стоит взглянуть на эту веб-трансляцию: https://msevents.microsoft.com/CUI/WebCastRegistrationConfirmation.aspx?culture=en-US&RegistrationID=1299758384&Validate=false

Кстати, я обнаружил, что все 10 веб-кастов в этой серии были очень хорошими.

...