2017-06-02 80 views
1

我想打開一個現有的MS Word文檔,然後在其上寫一個特定的文本。如何打開現有的doc/x文件,然後寫上它?

現有的文件有這樣的內容:

第一輛汽車的成本... $。

我想這個詞成本之後添加特定文本。 最後文本應該是:

第一輛車花費15000 $。

我想用一個簡單的c#應用程序來做到這一點。 我很難找到在所需位置添加文本的方法。

我使用了一個名爲DocX的NuGet包。 這裏是我的代碼:

using Novacode; 
using System.Text.RegularExpressions; 
... 
string fileName = @"C:\Users\DAFPC\Documents\WordDoc1.docx"; 
var doc = DocX.Load(fileName); 
doc.ReplaceText("...", "15000",false, RegexOptions.None, null, null, MatchFormattingOptions.SubsetMatch, true, false); 
doc.Save(); 
Process.Start("WINWORD.EXE", fileName); 

的代碼並不能取代 「...」 與 「15000」。但如果我試圖用「15000」代替「Car」這個詞,代碼就可以工作。

+1

您忘記添加你寫的代碼,這樣每個人都可以幫助你從那裏開始 –

+0

內部,'* .docx'文件存儲爲不同的文件目錄的'* .zip'存檔。將它複製到'xxx.docx.zip'並使用像'7z'這樣的工具來查看。理論上,您的代碼可以修改'document.xml'文件,但啓動一個'Word'應用程序並使用'Word Application'對象的方法來修改'* .docx'文件可能更容易。但是,需要一點閱讀和學習。 –

+1

我現在做了@DamianLattenero – admiri92

回答

2

檢查編輯

doc.ReplaceText(toReplace, replacement); 

你應該把它包在一個函數如下所示:

static void Main(string[] args) 
{ 
    string filename = "test.docx"; 
    ReplaceInDocx(filename, "...", "15000"); 
} 

static void ReplaceInDocx(string filename, string toReplace, string replacement) 
{ 
    var doc = DocX.Load(filename); 
    doc.ReplaceText(toReplace, replacement); 
    doc.Save(); 
} 

您可能會發現this有用。

編輯:好的,我明白你的意思了。問題在於MS Word的工作方式。當你輸入「...」時,它會自動轉換成「...」(省略號)。那麼你應該做的是搜索它。或者更好的是,改變搜索參數。

ReplaceInDocx(filename, "…", "car"); 
相關問題