2017-05-17 37 views
1

我想在不打開它的情況下閱讀單詞文檔。然後替換它中的一些文本,然後使用C#將其另存爲另一個名稱。但是文檔不會與更改一起保存,而是以與原始文檔相同的方式保存。任何幫助將不勝感激。提前致謝。C#單詞文檔

string path = Server.MapPath("~/CustomerDocument/SampleNDA5.docx"); 
    WordprocessingDocument wordprocessingDocument = WordprocessingDocument.Open(path, false); 
    { 
     var body = wordprocessingDocument.MainDocumentPart.Document.Body; 

     foreach (var text in body.Descendants<Text>()) 
     { 
      if (text.Text.Contains("<var_Date>")) 
      { 
       text.Text = text.Text.Replace("<var_Date>", DateTime.Now.ToString("MMM dd,yyyy")); 
      } 
     } 
     wordprocessingDocument.SaveAs(Server.MapPath("~/CustomerDocument/SampleNDA10.docx")); 
     wordprocessingDocument.Close(); 
    } 

回答

1

所以,如果您的Word模板是一樣的,每次你基本上

  • 複製的模板
  • 工作,對模板
  • 保存在所需的格式
  • 刪除模板複製

您正在更換的每個部分word文檔,您必須爲該位置插入書籤(在區域中輸入文本的最簡單方法)。

我總是創建一個函數來完成這個任務,並且最終傳遞路徑 - 以及所有文本來替換我的文檔內書籤。函數調用有時可能會很長,但它對我很有用。

Application app = new Application(); 
Document doc = app.Documents.Open("sDocumentCopyPath.docx"); 

if (doc.Bookmarks.Exists("bookmark_1")) 
{ 
    object oBookMark = "bookmark_1"; 
    doc.Bookmarks.get_Item(ref oBookMark).Range.Text = 
      "My Text To Replace bookmark_1"; 
} 
if (doc.Bookmarks.Exists("bookmark_2")) 
{ 
    object oBookMark = "bookmark_2"; 
    doc.Bookmarks.get_Item(ref oBookMark).Range.Text = 
      "My Text To Replace bookmark_2"; 
} 

doc.ExportAsFixedFormat("myNewPdf.pdf", WdExportFormat.wdExportFormatPDF); 

((_Document)doc).Close(); 
((_Application)app).Quit(); 

這段代碼應該讓你開始運行,除非你想把所有的值傳入一個函數。

如果您需要更多的解釋,我可以幫助以及:)我的例子將其保存爲.pdf,但您可以執行任何您喜歡的格式。

相關問題