2013-04-26 91 views
0

我有一個.docx文件和Dictionary<string,string>。我需要查看文檔,並將Dictionary.Key的文本eqaul替換爲Dictionary中的相應值。它將在服務器上,因爲我不想使用Microsoft.Office.Interopt庫生成COM對象。對於我最喜歡的解決方案OpenXML,但在網絡上我沒有工作解決方案。我發現this solution of Eric White。它不適合我。完全可以說,我運行方法SearchAndReplace,但文檔沒有變化。我經歷了這些方法,發現問題出在方法PutXmlInDocument方法中,通過獲取流的方法將XmlDocument節省到給定的OpenXmlPart。是否有任何其他解決方案使用OpenXML或做什麼保存XmlDocumentOpenXmlPart如何使用OpenXML搜索和替換Word文檔中的文本?

這是一個方法,儲蓄是不成功的:

public static void PutXmlDocument(OpenXmlPart part, XmlDocument xmlDoc) 
    { 
     using (Stream partStream = part.GetStream(FileMode.Create, FileAccess.Write)) 
     using (XmlWriter partXmlWriter = XmlWriter.Create(partStream)) 
      xmlDoc.Save(partXmlWriter); 

    } 
+1

http://www.codeproject.com/Articles/87711/Manipulate-Docx-with-C-without-Microsoft-Word-inst – 2013-04-26 14:00:55

+0

它是在一個段落?它在桌子上嗎?它在標題中嗎?它在頁腳?這些值在docx中有多少?如果有不止一個,你想要全部替換還是隻替換第一個?我們需要更多信息。 – jn1kk 2013-04-26 14:05:20

+0

我對此沒有任何信息。我有一個「搜索值」列表和一個「新值」列表。我需要搜索「搜索值」並將其更改爲「新值」。它可以是你上面寫的每一個。 – Javidan 2013-04-26 14:10:32

回答

0

我接觸到Blogger,並詢問這種情況。最後我達到了這個解決方案。如果替換爲WordprocessingDocument,那麼Eric White的解決方案效果很好。但是,如果它超過1,則在完成所有替換之後,在執行WordprocessingDocument之前必須調用以下方法。

WordprocessingDocument.Package.Close(); 
相關問題