4

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

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

4

1 回答 1

6

您可以通过altChunk锚点导入外部内容。altChunk锚点在 word 文档定义了一个位置,用于插入外部内容,例如 RTF、HTML、XML...

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

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

  1. 打开你的word文档。
  2. 创建AlternativeFormatImportPart具有唯一块 ID 的块。
  3. 将您的 RTF 数据输入到块中(我在MemoryStream这里使用)。
  4. 创建一个AltChunk具有相同 ID 的用于创建AlternativeFormatImportPart.
  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<Paragraph>().Last());

    mainDocPart.Document.Save();

  }
}
于 2013-02-13T19:25:15.403 回答