4
我正在開發一個.NET C#應用程序,需要創建一個Word文檔,插入存儲在數據庫中的RTF文本片段。有誰知道是否有可能以及如何使用OpenXml(或COM互操作)完成此操作?是否可以使用OpenXml將一些RTF文本插入到Word文檔(.docx)中?
我不需要將一個完整的RTF文件轉換爲Word文檔。我需要以編程方式創建一個Word文檔,並使用C#在Word文檔的不同位置添加RTF文本片段。
我正在開發一個.NET C#應用程序,需要創建一個Word文檔,插入存儲在數據庫中的RTF文本片段。有誰知道是否有可能以及如何使用OpenXml(或COM互操作)完成此操作?是否可以使用OpenXml將一些RTF文本插入到Word文檔(.docx)中?
我不需要將一個完整的RTF文件轉換爲Word文檔。我需要以編程方式創建一個Word文檔,並使用C#在Word文檔的不同位置添加RTF文本片段。
您可以通過altChunk錨點導入外部內容。 的altChunk錨定義了一個word文檔內的地方插入 外部內容,如RTF,HTML,XML,...
有關altChunk錨請參閱 更多信息下面的文章MSDN 。
下面的代碼演示瞭如何使用 OpenXML的SDK插入RTF的塊到Word文檔:
AlternativeFormatImportPart
組塊。MemoryStream
)。AlternativeFormatImportPart
相同的ID創建一個AltChunk
。。
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();
}
}
你的意思是說docx? OpenXml可以創建一個文檔。我會通過COM interop使用OpenXml。 – Paparazzi
我寧願在COM interop上也使用OpenXml,但我不知道是否可以將一些RTF文本插入到OpenXml文檔中,而無需先解析它。如果有人能指出我的方向是正確的,那就好了。或者,如果可以使用Xaml(使用flowdocument)來完成,那也適用於我,但是我將使用WPF RichTextBox而不是WinForms RichTextBox將文本片段插入到數據庫中。 – Gert