4

データベースに格納されている RTF テキストのフラグメントを挿入して、Word ドキュメントを作成する必要がある .NET C# アプリを開発しています。それが可能かどうか、また OpenXml (または COM 相互運用) を使用してこれを行う方法を知っている人はいますか?

1 つの完全な RTF ファイルを Word 文書に変換する必要はありません。Word 文書をプログラムで作成し、C# を使用して Word 文書のさまざまな場所に RTF テキストを追加する必要があります。

4

1 に答える 1

6

altChunkアンカーを介して外部コンテンツをインポートできます。altChunkアンカーは、RTF、HTML、XML などの外部コンテンツを挿入する Word 文書内の場所を定義します

altChunkアンカーの詳細については、次のMSDN記事を参照してください。

次のコードは、OpenXML SDK を使用して Word 文書に RTF のチャンクを挿入する方法を示しています。

  1. ワード文書を開きます。
  2. AlternativeFormatImportPart一意のチャンク ID を持つチャンクを作成します。
  3. RTF データをチャンクにフィードします (MemoryStreamここでは a を使用しています)。
  4. の作成にAltChunk使用したのと同じ ID で を作成しAlternativeFormatImportPartます。
  5. ワード文書を保存します。

.

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 に答える