该类在他人编写的几个类基础上扩展完善而来,主要功能有: (1)插入文本 (2)插入图片 (3)插入表格 (4)载入模版 (5)编辑模版,利用标签等 (6)插入页眉页脚 /*************************************************************************** * word辅助类 * 作者:chengfellow * 日期:2008.8.18 * 注意事项: * 1、开发环境居于office 2003; * 2、需要添加Com引用:Microsoft Office 11.0 Object Library和 * Microsoft Word 11.0 Object Library。 * ****************************************************************************/ using System; using System.Collections.Generic; using System.Text; using System.Drawing; using System.Windows.Forms; using System.IO; using System.Data; namespace WordAddinSample { public class WordHelp { #region - 属性 - private Microsoft.Office.Interop.Word.ApplicationClass oWord; // a reference to Word application,应用程序 private Microsoft.Office.Interop.Word.Document oDoc; // a reference to the document,具体文档 object missing = System.Reflection.Missing.Value; public Microsoft.Office.Interop.Word.ApplicationClass WordApplication { get { return oWord; } } public string ActiveWindowCaption { get { return oWord.ActiveWindow.Caption; } set { oWord.ActiveWindow.Caption = value; } } public enum OwdWrapType { 嵌入型, //wdWrapInline 四周型, //Square. 紧密型, //Tight. 衬于文字下方,//Behind text. 衬于文字上方 //Top and bottom. } #endregion #region - 创建关闭文档 - public WordHelp() //构造函数 1 { // activate the interface with the COM object of Microsoft Word oWord = new Microsoft.Office.Interop.Word.ApplicationClass(); } public WordHelp(Microsoft.Office.Interop.Word.ApplicationClass wordapp) //构造函数 2 { oWord = wordapp; } // Open a file (the file must exists) and activate it,打开已存在 public void Open(string strFileName) { object fileName = strFileName; object readOnly = false; object isVisible = true; oDoc = oWord.Documents.Open(ref fileName, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing); oDoc.Activate(); } // Open a new document,创建新文档 public void Open() { oDoc = oWord.Documents.Add(ref missing, ref missing, ref missing, ref missing); oDoc.Activate(); } public void Quit() { oDoc.Close(ref missing, ref missing, ref missing); if (oDoc != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(oDoc); oDoc = null; } // oWord.Application.Quit(ref missing, ref missing, ref missing); tjt oWord.Quit(ref missing, ref missing, ref missing); if (oWord != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(oWord); oWord = null; } //释放word进程 GC.Collect(); } /// <summary> /// 从模板创建新的Word文档, /// </summary> /// <param name="templateName">模板文件名</param> /// <returns></returns> public bool LoadDotFile(string templateName) { if (!string.IsNullOrEmpty(templateName)) { oWord.Visible = false; oWord.Caption = ""; oWord.Options.CheckSpellingAsYouType = false; oWord.Options.CheckGrammarAsYouType = false; Object Template = templateName;// Optional Object. The name of the template to be used for the new document. If this argument is omitted, the Normal template is used. Object NewTemplate = false;// Optional Object. True to open the document as a template. The default value is False. Object DocumentType = Microsoft.Office.Interop.Word.WdNewDocumentType.wdNewBlankDocument; // Optional Object. Can be one of the following WdNewDocumentType constants: wdNewBlankDocument, wdNewEmailMessage, wdNewFrameset, or wdNewWebPage. The default constant is wdNewBlankDocument. Object Visible = true;//Optional Object. True to open the document in a visible window. If this value is False, Microsoft Word opens the document but sets the Visible property of the document window to False. The default value is True. try { oDoc = oWord.Documents.Add(ref Template, ref NewTemplate, ref DocumentType, ref Visible); return true; } catch (Exception ex) { string err = string.Format("创建Word文档出错,错误原因:{0}", ex.Message); throw new Exception(err, ex); } } return false; } /// /// 打开Word文档,并且返回对象oDoc /// 完整Word文件路径+名称 /// 返回的Word.Document oDoc对象 public Microsoft.Office.Interop.Word.Document CreateWordDocument(string FileName, bool HideWin) { if (FileName == "") return null; oWord.Visible = HideWin; oWord.Caption = ""; oWord.Options.CheckSpellingAsYouType = false; oWord.Options.CheckGrammarAsYouType = false; Object filename = FileName; Object ConfirmConversions = false; Object ReadOnly = true; Object AddToRecentFiles = false; Object PasswordDocument = System.Type.Missing; Object PasswordTemplate = System.Type.Missing; Object Revert = System.Type.Missing; Object WritePasswordDocument = System.Type.Missing; Object WritePasswordTemplate = System.Type.Missing; Object Format = System.Type.Missing; Object Encoding = System.Type.Missing; Object Visible = System.Type.Missing; Object OpenAndRepair = System.Type.Missing; Object DocumentDirection = System.Type.Missing; Object NoEncodingDialog = System.Type.Missing; Object XMLTransform = System.Type.Missing; try { Microsoft.Office.Interop.Word.Document wordDoc = oWord.Documents.Open(ref filename, ref ConfirmConversions, ref ReadOnly, ref AddToRecentFiles, ref PasswordDocument, ref PasswordTemplate, ref Revert, ref WritePasswordDocument, ref WritePasswordTemplate, ref Format, ref Encoding, ref Visible, ref OpenAndRepair, ref DocumentDirection, ref NoEncodingDialog, ref XMLTransform); return wordDoc; } catch (Exception ex) { MessageBox.Show(ex.Message); return null; } } public void SaveAs(Microsoft.Office.Interop.Word.Document oDoc, string strFileName) { object fileName = strFileName; if (File.Exists(strFileName)) { if (MessageBox.Show("文件'" + strFileName + "'已经存在,选确定覆盖原文件,选取消退出操作!", "警告", MessageBoxButtons.OKCancel) == DialogResult.OK) { oDoc.SaveAs(ref fileName, 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); } else { Clipboard.Clear(); } } else { oDoc.SaveAs(ref fileName, 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); } } public void SaveAsHtml(Microsoft.Office.Interop.Word.Document oDoc, string strFileName) { object fileName = strFileName; //wdFormatWebArchive保存为单个网页文件 //wdFormatFilteredHTML保存为过滤掉word标签的htm文件,缺点是有图片的话会产生网页文件夹 if (File.Exists(strFileName)) { if (MessageBox.Show("文件'" + strFileName + "'已经存在&#x