是否可以使用OpenXml将RTF文本片段插入Word文档(.docx)?

我正在开发一个.NET C#应用程序,需要创建一个Word文档,插入存储在数据库中的RTF文本片段。 有没有人知道是否有可能以及如何使用OpenXml(或COM互操作)完成此操作?

我不需要将一个完整的RTF文件转换为Word文档。 我需要以编程方式创建一个Word文档,并使用C#在word文档的不同位置添加RTF文本。

您可以通过altChunk锚点导入外部内容。 altChunk锚定义word文档中的一个位置以插入外部内容,如RTF,HTML,XML,…

有关altChunk锚点的更多信息,请参阅以下MSDN文章。

以下代码显示了如何使用OpenXML SDK将一大块RTF插入到word文档中:

  1. 打开word文档。
  2. 使用唯一的块ID创建AlternativeFormatImportPart块。
  3. 将RTF数据输入块(我在这里使用MemoryStream )。
  4. 创建一个AltChunk ,其ID与用于创建AlternativeFormatImportPart ID相同。
  5. 保存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(); } }