程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#處理Word文檔的示例代碼

C#處理Word文檔的示例代碼

編輯:關於C#
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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved