zoukankan      html  css  js  c++  java
  • C# 根据Word 模板生成word 文件

     /// <summary>
        /// 调用模板生成word
        /// </summary>
        /// <param name="templateFile">模板文件</param>
        /// <param name="fileName">生成的具有模板样式的新文件</param>

    ///<param name="dt">需插入到文档中的数据 </param>


        public void ExportWord(string templateFile, string fileName,DataTable dt)
        {
            try
            {
                Word.Application app = new Word.Application(); //生成word程序对象
                //模板文件
                string TemplateFile = templateFile;
                //生成的具有模板样式的新文件
                string FileName = fileName;
                //模板文件拷贝到新文件
                File.Copy(TemplateFile, FileName);
                //生成documnet对象
                Word.Document doc = new Word.Document();
                object Obj_FileName = FileName;
                object Visible = false;
                object ReadOnly = false;
                object missing = System.Reflection.Missing.Value;
                //打开文件
                doc = app.Documents.Open(ref Obj_FileName, ref missing, ref ReadOnly, ref missing,
                    ref missing, ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing, ref Visible,
                    ref missing, ref missing, ref missing,
                    ref missing);
                doc.Activate();
                int WordNum = 18;//书签个数
                //将光标转到模板中定义的书签的位置,插入所需要添加的内容,循环次数与书签个数相符
                for (int WordIndex = 1; WordIndex <= WordNum; WordIndex++)
                {
                    object WordMarkName = dt.Columns[WordIndex-1].ToString();//word模板中的书签名称
                    object what = Word.WdGoToItem.wdGoToBookmark;
                    doc.ActiveWindow.Selection.GoTo(ref what, ref missing, ref missing, ref WordMarkName);//光标转到书签的位置
                    doc.ActiveWindow.Selection.TypeText(dt.Rows[0][""+dt.Columns[WordIndex-1].ToString()+""].ToString());//插入的内容,插入位置是word模板中书签定位的位置
                    //doc.ActiveWindow.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;//设置当前定位书签位置插入内容的格式
                    //doc.ActiveWindow.Selection.TypeParagraph();//回车换行
                }
                //输出完毕后关闭doc对象
                object IsSave = true;
                doc.Close(ref IsSave, ref missing, ref missing);
            }
            catch (Exception Ex)
            {
                Response.Write(Ex.ToString());
                return;
            }
        }

    //调用生成Word文档

     string templateFile = @"E:Word模板.doc";
                    //生成的具有模板样式的新文件
                    string fileName = @"E:生成文档名" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".doc";              
                    ExportWord(templateFile, fileName, dt);

    word 文档需根据需求加下对应的书签名

    在源代码程序中调试正常,但发布到服务器上时会出现无法生成新的套打文件。解决方案如下:

    要将 ASP.NET 访问权限授予某个文件,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。
    解决方案:
                      
    1: 在"开始"->"运行"->dcomcnfg.exe启动"组件服务"。

    2: 然后 "组件服务"->"计算机"->"我的电脑"->"DCOM配置"。

    3: 在"DCOM配置"中找到“Microsoft Excel 应用程序”,右键,然后点击“属性”->“标识”->选择"启动服务".(注:这里并没有选择为“交互式用户”)

    4: 在"安全"标签下:
         a. "启动和激活权限"->"自定义"->"编辑"->增加"NETWORK SERVICE"、"ASP.NET"用户,并给它赋予"本地启动"和"本地激活"权限.
         b. "访问权限"->"自定义"->"编辑"->增加"NETWORK SERVICE"用户,然后赋予"本地访问"权限.
         c. "配置权限"->"自定义"->"编辑"->增加"NETWORK SERVICE"用户和"guest"账号.

  • 相关阅读:
    UDP与TCP报文格式,字段意义
    TCP报文头部解析
    SQL中IN和EXISTS用法的区别
    SQL中EXISTS的用法
    rabbitmq之一概念解释(信道、交换器和路由键、队列)
    Memcache,Redis,MongoDB三种非关系型数据库的对比
    linux chage
    linux用户组管理
    c++ decltype
    c++ 隐式转换(explicit与转换构造函数)
  • 原文地址:https://www.cnblogs.com/bx-paper/p/3522742.html
Copyright © 2011-2022 走看看