public partial class Form1 : Form { public Microsoft.Office.Interop.Word.Document document; public Microsoft.Office.Interop.Word.ApplicationClass wd = null; public string filename = null; private bool deactivateevents = false; public int iWordID = 0; public Form1() { InitializeComponent(); } #region 加載文檔 /// <summary> ///加載需要處理的文檔,備份,處理新生成的文檔 /// </summary> /// <param name="t_filename">需要處理的文件路徑及名稱,比如:C:\Users\jiankunking\Desktop\11.doc</param> /// <param name="NewFileName">新文件名(包含路徑),比如:C:\Users\jiankunking\Desktop\22.doc</param> public void WordHandle(string t_filename, string NewFileName) { deactivateevents = true; filename = t_filename; if (wd == null) wd = new Microsoft.Office.Interop.Word.ApplicationClass(); try { if (wd == null) { //自定義處理 } if (wd.Documents == null) { //自定義處理 } wd.CommandBars.AdaptiveMenus = false; wd.DocumentBeforeClose += new Microsoft.Office.Interop.Word.ApplicationEvents4_DocumentBeforeCloseEventHandler(OnClose); wd.DocumentOpen += new Microsoft.Office.Interop.Word.ApplicationEvents4_DocumentOpenEventHandler(OnOpenDoc); wd.ApplicationEvents4_Event_Quit += new Microsoft.Office.Interop.Word.ApplicationEvents4_QuitEventHandler(OnQuit); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } if (document != null) { try { object dummy = null; wd.Documents.Close(ref dummy, ref dummy, ref dummy); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } object fileName = filename; object newTemplate = false; object docType = 0; object isVisible = true; object missing = System.Reflection.Missing.Value; try { document = wd.Documents.Add(ref fileName, ref newTemplate, ref docType, ref isVisible); if (document == null) { //自定義處理 } //這裡獲取進程信息,是為了關閉進程用的 //本文URL:http://www.bianceng.cn/Programming/csharp/201410/45580.htm //Process[] processes = Process.GetProcessesByName("WINWORD"); //iWordID = processes[processes.Length - 1].Id; object newfileName = NewFileName; document.SaveAs(ref newfileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); string sBKName = string.Empty; foreach (Microsoft.Office.Interop.Word.Bookmark bk in document.Bookmarks) { sBKName = bk.Name; //word中的書簽操作 } document.Save(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } deactivateevents = false; } #endregion /// <summary> /// catches Word's close event /// starts a Thread that send a ESC to the word window ;) /// </summary> /// <param name="doc"></param> /// <param name="test"></param> private void OnClose(Microsoft.Office.Interop.Word.Document doc, ref bool cancel) { if (!deactivateevents) { cancel = true; } } /// <summary> /// catches Word's open event /// just close /// </summary> /// <param name="doc"></param> private void OnOpenDoc(Microsoft.Office.Interop.Word.Document doc) { OnNewDoc(doc); } /// <summary> /// catches Word's newdocument event /// just close /// </summary> /// <param name="doc"></param> private void OnNewDoc(Microsoft.Office.Interop.Word._Document doc) { if (!deactivateevents) { deactivateevents = true; object dummy = null; doc.Close(ref dummy, ref dummy, ref dummy); deactivateevents = false; } } /// <summary> /// catches Word's quit event /// normally it should not fire, but just to be shure /// safely release the internal Word Instance /// </summary> private void OnQuit() { //wd=null; } }
該代碼段可以用來實現,打開某個Word文檔,對其中的內容進行修改替換,比如:修改書簽或者替換書簽之類的。
該代碼段部分來自於: http://www.codeproject.com/cs/miscctrl/winwordcontrol.asp