Domanda di interazione Open XML di SharePoint e Office
-
10-07-2019 - |
Domanda
Ne sono stato frustrato per l'intero fine settimana, più un giorno o due, quindi qualsiasi aiuto sarebbe molto apprezzato.
Sto provando a scrivere un programma che può andare a livello di programmazione in una raccolta documenti di SharePoint 2007, aprire un file, modificare il contenuto del file, quindi reinserirlo. Ho perso tutto tranne l'ultima parte. Il motivo per cui è coinvolto Office Open XML è che è così che apro il documento e lo modifico tramite Office Open XML SDK. La mia domanda è: come posso recuperarlo dal documento nella libreria?
Il problema a mio avviso è che non esiste alcuna funzione di salvataggio sull'oggetto WordprocessingDocument stesso. Questo mi impedisce di salvarlo nella funzione SaveBinary di SPFile.
Soluzione
Dovresti usare gli stream per riscrivere il OOXML modificato nel file SP. Spero che questo esempio sia di aiuto!
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();
Altri suggerimenti
Ieri ho visto un webcast con Andrew Connell in cui ha aperto un documento da una raccolta documenti, aggiunto una filigrana e salvato di nuovo il file. Sembra proprio che dovresti dare un'occhiata a quel webcast: https://msevents.microsoft.com/CUI/ ? WebCastRegistrationConfirmation.aspx cultura = it-IT & amp; RegistrationID = 1299758384 & amp; Convalida = falso
tra l'altro ho scoperto che tutti e 10 i web cast di quella serie erano molto buoni.