利用.NET提供的Microsoft.Office.Interop.Word插件来填充资料给WORD模板

来源:互联网 发布:英文期刊数据库 编辑:程序博客网 时间:2024/06/07 22:33

这个是根据WORD中的页签来填充值的方法:

先引用 using Microsoft.Office.Interop.Word;

 protected void Button1_Click(object sender, EventArgs e)
        {
            //利用。NET提供的Microsoft.Office.Interop.Word插件来填充资料给WORD模板。
            string strPath = "~/test.doc"; //模板路径
            string strPath2 = "~/testtemp.doc";//生成新的WORD的名称与路径
            string strWordTemplate = Server.MapPath(strPath); //这里是您的模板文档
      Microsoft.Office.Interop.Word.Application WordApp = new  Microsoft.Office.Interop.Word.ApplicationClass();  //  定义一个Word.Application 对象

            if (!File.Exists(strWordTemplate))
                return ;
            Object missing = System.Reflection.Missing.Value;
            object fileName = (object)strWordTemplate;
            object isVisible = missing;
            object readOnly = missing;
            WordApp.Visible = false;
            //创建一个Word.Document的实例
            Microsoft.Office.Interop.Word.Document doc = null;
            try
            {

                doc = WordApp.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);

  Response.Redirect(strPath1);   //直接打开用ie打开另存的文档,与下面红色部分,是两种打开方法。第一种

                     }
            catch (Exception Ex)
            {
                throw new Exception(Ex.Message);
             
            }

     try
    {

       foreach (Microsoft.Office.Interop.Word.Bookmark BM in doc.Bookmarks)  //这是最关键的地方:对文档的任何书签进行便利匹配
     {
       switch(BM.Name)
       {
        case "id2": //替换Advice书签的内容,其他相同
         BM.Select();
         BM.Range.Text = "李生";
        break;
   
       }        
     }
 
        string strPath1 = "~/testtemp.doc";
        object fn = (object)Server.MapPath(strPath1);    
    doc.SaveAs(ref fn, 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);    //这里是另存为一个一个文档

    }
    catch(Exception err)
    {
     }
    finally
    {
     
     doc.Close(ref missing,ref missing,ref missing); 
     WordApp.Quit(ref missing,ref missing,ref missing);
     WordApp = null;
    }

    FileInfo mode = new FileInfo(@"D:\mywebform\YoungNetFirst\YoungNetFirst\testtemp.doc");//生成新的WORD档的路径。
    //打开保存对话框 第二种
    Response.Clear();
    Response.ClearHeaders();
    Response.Buffer = false;
    Response.Charset = "UTF-8";
    Response.ContentType = "application/ms-word";
    Response.AppendHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(mode.Name));
    Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
    Response.AppendHeader("Content-Length", mode.Length.ToString());
    Response.Charset = "";
    this.EnableViewState = false;
    Response.WriteFile(@"D:\mywebform\YoungNetFirst\YoungNetFirst\testtemp.doc");
    //删除创建的WORD文件
    FileInfo fileinf = new FileInfo(@"D:\mywebform\YoungNetFirst\YoungNetFirst\testtemp.doc");
    fileinf.Delete();
    //关闭连接
    Response.Flush();
    Response.End();
        }

这样就可以把资料填充到模板生成新的档案,弹出保存框,如果不需要弹出保存档,则可把红色部分拿掉。