我正在嘗試使用OpenXML SDK和Microsoft頁面上的示例來替換佔位符與Word文檔中的實際內容。使用OpenXML替換DOCX文件中的文本 - 奇怪的內容
它用於按照here所述的方式工作,但是在Word中添加頁眉和頁腳後編輯模板文件後,它停止工作。我不知道爲什麼和一些調試向我展示了這一點:
這是texts
在這段代碼內容:
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(DocumentFile, true))
{
var texts = wordDoc.MainDocumentPart.Document.Body.Descendants<Text>().ToList();
}
因此,我在這裏看到的是,該文件的正文是 「各自爲政」,即使在Word中的內容是這樣的:
有人可以告訴我如何解決這個問題嗎?
我被問到了我想達到的目標。基本上我想用真實內容替換用戶定義的「佔位符」。我想將Word文檔看作模板。佔位符可以是任何東西。在我上面的例子中,他們看起來像{var:Template1}
,但這只是我玩的東西。它基本上可以是任何字。
因此,例如,如果文檔包含以下內容:
做不使用名稱USER_NAME
的用戶應該能夠用這個詞來代替USER_NAME
佔位符例如,admin
,保持格式不變。結果應該是
做不使用名稱管理
我工作的段落層次,串聯的內容和然後更換該段的內容看到的問題,我擔心我失去了應該保留的格式
請勿使用名稱admin
如果您獲得文本運行,文本運行可以被個別格式化(例如,如果您在段落中強調單個字符),總會有點像這樣。爲什麼不在段落級別獲得文本?例如'Body.Descendants().' –
@NickDewitt那麼,如果我這樣做,我不會失去其他格式應用於該段落中的其他文本? –
好吧,文本元素仍然在段落內,格式在段落和文本運行級別。如果從段落或文本運行級別獲取節點文本,則無論如何都會丟失它的格式。你想達到什麼目的,例如在提取它們之後,你將如何處理這些元素? –