データベースに格納されている RTF テキストのフラグメントを挿入して、Word ドキュメントを作成する必要がある .NET C# アプリを開発しています。それが可能かどうか、また OpenXml (または COM 相互運用) を使用してこれを行う方法を知っている人はいますか?
1 つの完全な RTF ファイルを Word 文書に変換する必要はありません。Word 文書をプログラムで作成し、C# を使用して Word 文書のさまざまな場所に RTF テキストを追加する必要があります。
altChunkアンカーを介して外部コンテンツをインポートできます。altChunkアンカーは、RTF、HTML、XML などの外部コンテンツを挿入する Word 文書内の場所を定義します。
altChunkアンカーの詳細については、次のMSDN記事を参照してください。
次のコードは、OpenXML SDK を使用して Word 文書に RTF のチャンクを挿入する方法を示しています。
AlternativeFormatImportPart
一意のチャンク ID を持つチャンクを作成します。MemoryStream
ここでは a を使用しています)。AltChunk
使用したのと同じ ID で を作成しAlternativeFormatImportPart
ます。.
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();
}
}