È ansible inserire parti di testo RTF in un documento Word (.docx) usando OpenXml?

Sto sviluppando un’applicazione .NET C # che deve creare un documento Word, inserendo frammenti di testo RTF che sono memorizzati in un database. Qualcuno sa se è ansible e come si fa usando OpenXml (o interoperabilità COM)?

Non è necessario convertire un file RTF completo in un documento Word. Ho bisogno di creare un documento Word in modo programmatico e aggiungere parti di testo RTF in diversi punti nel documento word usando C #.

È ansible importare contenuto esterno tramite l’ancoraggio altChunk . L’ancoraggio altChunk definisce un posto all’interno di un documento word per inserire contenuti esterni come RTF, HTML, XML, …

Per ulteriori informazioni sull’ancora altChunk , consultare il seguente articolo MSDN .

Il seguente codice mostra come inserire un blocco di RTF in un documento word utilizzando l’SDK OpenXML:

  1. Apri il tuo documento di parole.
  2. Crea un blocco AlternativeFormatImportPart con un ID chunk unico.
  3. Inserisci i dati RTF nel blocco (sto usando un MemoryStream qui).
  4. Creare un AltChunk con lo stesso ID utilizzato per creare AlternativeFormatImportPart .
  5. Salva il documento word.

.

 static void Main(string[] args) { using (WordprocessingDocument doc = WordprocessingDocument.Open(@"test.docx", true)) { string altChunkId = "AltChunkId5"; MainDocumentPart mainDocPart = doc.MainDocumentPart; AlternativeFormatImportPart chunk = mainDocPart.AddAlternativeFormatImportPart( AlternativeFormatImportPartType.Rtf, altChunkId); string rtfEncodedString = @"{\rtf1\ansi{\fonttbl\f0\fswiss Helvetica;}\f0\pard This is some {\b bold} text.\par}"; using (MemoryStream ms = new MemoryStream(Encoding.ASCII.GetBytes(val))) { chunk.FeedData(ms); } AltChunk altChunk = new AltChunk(); altChunk.Id = altChunkId; mainDocPart.Document.Body.InsertAfter( altChunk, mainDocPart.Document.Body.Elements().Last()); mainDocPart.Document.Save(); } }