我有一個模板文檔,有幾個段落和表與一些樣式與他們相關聯。OpenXML 2.5 - WordProcessing - 如何在創建新文檔時從樣板文檔複製樣式?
我需要從基於序列的模板文檔中選擇元素,然後將它們附加到我的新文檔的正文中。下面是我的代碼,複製。我不知何故需要複製與元素相關的樣式。雖然有些樣式可以應用,但字體大小和表格邊框等內容不會被複制到新文檔中。任何幫助將非常感激。由於
Dictionary<string, string> sequence = GetSequence();
using (WordprocessingDocument templateDocument = WordprocessingDocument.Open(sourceFileLocation, false))
{
Body templateBody = templateDocument.MainDocumentPart.Document.Body;
using (
WordprocessingDocument wordDoc = WordprocessingDocument.Create(destinationFileLocation,
WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();
mainPart.Document = new Document();
Body wordDocDocBody = mainPart.Document.AppendChild(new Body());
//don't think the below two lines work as I intended.
ThemePart themePart1 = templateDocument.MainDocumentPart.ThemePart;
mainPart.AddPart(themePart1);
foreach (var item in sequence)
{
var block = templateBody.Elements().TakeWhile(x => x.InnerText == item.Key);
foreach (var blockItem in block)
{
wordDocBody.Append(blockItem.CloneNode(true));
}
}
}
}
您的解決方案只能部分工作。如果樣式已應用於文本,則OP將必須引用Styles.xml部分中的樣式,並將它們也添加到目標文檔中。 –
從上述代碼的上下文中,在將blockItem附加到目標文檔主體之前,是否需要創建ParagraphProperties類型的對象並從模板文檔中克隆實際段落的屬性?謝謝。 – Ren