2008-11-23 7 views
1

J'ai été frustré par cela pendant toute la fin de semaine, plus un jour ou deux, donc toute aide serait grandement appréciée. J'essaye d'écrire un programme qui peut par programme entrer dans une bibliothèque de doc de SharePoint 2007, ouvrir un fichier, changer le contenu du dossier, puis remettre le dossier. J'ai tout sauf la dernière partie de ça. La raison pour laquelle Office Open XML est impliqué est que c'est ainsi que j'ouvre le document et que je le modifie - via le SDK Office Open XML. Ma question est la suivante: comment l'obtenir à partir du document dans la bibliothèque?Question d'interaction SharePoint et Office Open XML

Le problème que je vois est qu'il n'y a aucune fonction d'enregistrement sur l'objet WordprocessingDocument lui-même. Cela m'empêche de l'enregistrer dans la fonction SaveBinary du SPFile.

Répondre

2

Vous devez utiliser des flux pour réécrire le fichier OOXML modifié dans le fichier SPFile. J'espère que cet exemple est utile!

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

Hier, j'ai vu une webdiffusion avec Andrew Connell, où il a ouvert un document à partir d'une bibliothèque de doc, a ajouté un filigrane et a enregistré à nouveau le fichier. Il semble que vous devriez jeter un coup d'oeil à cette webdiffusion: https://msevents.microsoft.com/CUI/WebCastRegistrationConfirmation.aspx?culture=en-US&RegistrationID=1299758384&Validate=false

btw J'ai trouvé que tous les 10 modèles de cette série étaient très bons.

+0

J'ai essayé de faire ce qu'il a fait aussi près que possible. Cependant, il n'a pas montré le morceau de code pour remettre l'article dans SharePoint! Vraiment assez ennuyeux (pas que je te blâme, ennuyeux de LUI). – user29227