c#讀取Word模板,利用書籤替換內容包括表格

 //生成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;
            }
相關文章
相關標籤/搜索