首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用.docx将RTF文本插入到Word文档( OpenXml )中?

问是否可以使用.docx将RTF文本插入到Word文档( OpenXml )中?
EN

Stack Overflow用户
提问于 2013-02-05 16:01:28
回答 1查看 5.6K关注 0票数 4

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

我不需要把一个完整的RTF文件转换成Word文档。我需要通过编程创建一个Word文档,并使用C#在word文档中的不同位置添加RTF文本。

EN

回答 1

Stack Overflow用户

发布于 2013-02-13 19:25:15

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

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

下面的代码演示如何使用OpenXML SDK将RTF块插入到word文档中:

  1. 打开你的文字文档。
  2. 创建一个具有唯一块ID的AlternativeFormatImportPart块。
  3. 将RTF数据输入到块中(这里使用的是MemoryStream )。
  4. 使用用于创建AltChunk的ID创建AlternativeFormatImportPart。
  5. 保存单词文档。

。

代码语言:javascript
复制
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();

  }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14711659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档