//生成WORD程序對象和WORD文檔對象 Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document doc = new Document(); object miss = System.Reflection.Missing.Value; try { //打開模板文檔,並指定doc的文檔類型 //object objTemplate = System.Windows.Forms.Application.StartupPath + @"\UploadFiles\tz103.doc"; //路徑一定要正確 object objTemplate = @"c:\\測試.docx"; object objDocType = WdDocumentType.wdTypeDocument; object objfalse = false; object objtrue = true; doc = (Document)appWord.Documents.Add(ref objTemplate, ref objfalse, ref objDocType, ref objtrue); //獲取模板中所有的書簽 Bookmarks odf = doc.Bookmarks; string[] testTableremarks = { "FirstParty", "SecondParty", "FirstPartySign", "SecondPartySign" }; string[] testTablevalues = { "嘉實多(深圳)有限公司廣州分公司", "廣州嘉通", "嘉實多(深圳)有限公司廣州分公司", "廣州嘉通貿易有限公司" }; //循環所有的書簽,並給書簽賦值 for (int oIndex = 0; oIndex < testTableremarks.Length; oIndex++) { object obDD_Name = ""; obDD_Name = testTableremarks[oIndex]; //doc.Bookmarks.get_Item(ref obDD_Name).Range.Text = p_TestReportTable.Rows[0][testTablevalues[oIndex]].ToString();//此處Range也是WORD中很重要的一個對象,就是當前操作參數所在的區域 odf.get_Item(ref obDD_Name).Range.Text = testTablevalues[oIndex]; } //附件,插入表格 //這里簡單生成樣例數據表,工作中要以實際的數據集為准 System.Data.DataTable dt = new System.Data.DataTable(); dt.Columns.Add("name", typeof(string)); dt.Columns.Add("age", typeof(string)); DataRow dr = dt.NewRow(); dr["name"] = "姓名"; dr["age"] = "年齡"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["name"] = "張三"; dr["age"] = "20"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["name"] = "李四"; dr["age"] = "25"; dt.Rows.Add(dr); //附件一 object obAttachMent = "Attachment1"; //創建Word表格,並指定標簽 Microsoft.Office.Interop.Word.Table dtWord = doc.Tables.Add(odf.get_Item(ref obAttachMent).Range, dt.Rows.Count, dt.Columns.Count); dtWord.Borders.InsideLineStyle = WdLineStyle.wdLineStyleDot; dtWord.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleDot; //循環往表格里賦值 for (int i = 1; i <= dt.Rows.Count; i++) { for (int j = 1; j <= dt.Columns.Count; j++) { dtWord.Rows[i].Cells[j].Range.Text = dt.Rows[i - 1][j - 1].ToString(); } } //第四步 生成word,將當前的文檔對象另存為指定的路徑,然后關閉doc對象。關閉應用程序 object filename = "c:\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".docx";//HttpContext.Current.Server.MapPath("f:\\") + "Testing_" + DateTime.Now.ToShortDateString() + ".doc"; object Password = "P@55w0rd"; //對Word文檔進行加密保護,不允許編輯 if (Password !=null) { doc.Protect(WdProtectionType.wdAllowOnlyReading, ref objfalse, ref Password, ref miss, ref miss); } doc.SaveAs(ref filename, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss); object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges; doc.Close(ref doNotSaveChanges, ref miss, ref miss); appWord.Application.Quit(ref miss, ref miss, ref miss); doc = null; appWord = null; MessageBox.Show("生成成功!"); System.Diagnostics.Process.Start(filename.ToString());//打開文檔 } catch (Exception) { doc.Close(ref miss, ref miss, ref miss); appWord.Application.Quit(ref miss, ref miss, ref miss); doc = null; appWord = null; }
