具体思路:

  1.先制作Word模版,使用文本框+书签的方式来设计模版;

  2.模版制作完之后,根据模版生成新文件,使用File.Copy方法,生成.doc格式新文件;

  3.后台取得数据,参照网页渲染的方式标记数据流,方便之后的写入操作;

  4.编辑新文件,根据程序中标记与书签的对应关系,利用类库中的方法来修改书签的内容,最后保存文件即可。

  优点:

  能够自定义元素的位置,方法也很简单易懂,如果只是表格之类的简单格式会很适用。

  缺点:

  灵活性不好,如果要套打的对象是网页,且不是表格形式的,还原程度不好,而且如果文字内容过多会出现超出文本框范围的情况。

  操作过程&代码:

  1)第一步,引入对应的程序集

  如果不是使用第三方的类库的话,是不需要下载的,只要你的系统完整安装了office,你的系统程序集中就会带有操作Word的程序集。

  首先,添加引用Microsoft.Office.Interop.Word,之后,在类中添加相对应的引用:

  1. using MSWord = Microsoft.Office.Interop.Word; //这里重命名为MSWord,之后使用的时候就可以简写了
  2. using System.IO;//要操作文件的话,要引用系统IO
  3. using System.Reflection;

  2)准备工作

  1. MSWord.Application wordApp = new MSWord.Application();//word应用程序变量
  2. MSWord.Document wordDoc;//word文档变量
  3. string TemplateFile = @"D:\Model.doc"; //模版文件的路径,
  4. string FileName = @"D:\" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + ".doc";//新文件的路径

  3)拷贝模版生成新文件

  1. File.Copy(TemplateFile, FileName);//首先要拷贝一份文件
  2. object obj_FileName = FileName;//新建一个obj变量用于操作

  4)设置操作类型,操作类型有很多中,这里要打开新文件,修改其中的内容

  1. wordDoc = wordApp.Documents.Open(ref obj_FileName);//打开新文件,进行操作
  2.  
  3. wordDoc.Activate();//设置现在操作的文件

  5)依据书签修改word内容

  1. //循环书签,判断书签名称,并为其赋值
  2. foreach (MSWord.Bookmark bm in wordDoc.Bookmarks)
  3. {
  4. if (bm.Name == "billno")
  5. {
  6. bm.Select();
  7. bm.Range.Text = "2008";
  8. }
  9. if (bm.Name == "dated")
  10. {
  11. bm.Select();
  12. bm.Range.Text = DateTime.Now.ToString();
  13. }
  14. }

  6)关闭文件

  1. wordDoc.SaveAs2(obj_FileName);//保存文件
  2. wordDoc.Close();//关闭文档对象
  3. wordApp.Quit();//关闭应用程序对象

  7)杀进程,有的情况下,关闭Word文件会不成功,会残留很多word进程

  1. System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName("WINWORD");
  2. foreach (System.Diagnostics.Process p in processes)
  3. {
  4. bool b = p.MainWindowTitle == "";
  5. if (p.MainWindowTitle == "")
  6. {
  7. p.Kill();
  8. }
  9. }

  8)下载

  1. Response.Clear();
  2. Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(Path.GetFileName(FileName),
  3. System.Text.Encoding.UTF8));
  4. Response.ContentType = "application/msword";
  5. Response.TransmitFile(FileName);
  6. Response.Flush();
  7. Response.End();

  转自:https://www.cnblogs.com/jydeng/p/4398500.html

具体思路:

  1.先制作Word模版,使用文本框+书签的方式来设计模版;

  2.模版制作完之后,根据模版生成新文件,使用File.Copy方法,生成.doc格式新文件;

  3.后台取得数据,参照网页渲染的方式标记数据流,方便之后的写入操作;

  4.编辑新文件,根据程序中标记与书签的对应关系,利用类库中的方法来修改书签的内容,最后保存文件即可。

  优点:

  能够自定义元素的位置,方法也很简单易懂,如果只是表格之类的简单格式会很适用。

  缺点:

  灵活性不好,如果要套打的对象是网页,且不是表格形式的,还原程度不好,而且如果文字内容过多会出现超出文本框范围的情况。

  操作过程&代码:

  1)第一步,引入对应的程序集

  如果不是使用第三方的类库的话,是不需要下载的,只要你的系统完整安装了office,你的系统程序集中就会带有操作Word的程序集。

  首先,添加引用Microsoft.Office.Interop.Word,之后,在类中添加相对应的引用:

  1. 1 using MSWord = Microsoft.Office.Interop.Word; //这里重命名为MSWord,之后使用的时候就可以简写了
  2. 2 using System.IO;//要操作文件的话,要引用系统IO
  3. 3 using System.Reflection;

  2)准备工作

  1. 1 MSWord.Application wordApp = new MSWord.Application();//word应用程序变量
  2. 2 MSWord.Document wordDoc;//word文档变量
  3. 3 string TemplateFile = @"D:\Model.doc"; //模版文件的路径,
  4. 4 string FileName = @"D:\" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + ".doc";//新文件的路径

  3)拷贝模版生成新文件

  1. 1 File.Copy(TemplateFile, FileName);//首先要拷贝一份文件
  2. 2 object obj_FileName = FileName;//新建一个obj变量用于操作

  4)设置操作类型,操作类型有很多中,这里要打开新文件,修改其中的内容

  1. 1 wordDoc = wordApp.Documents.Open(ref obj_FileName);//打开新文件,进行操作
  2. 2
  3. 3 wordDoc.Activate();//设置现在操作的文件

  5)依据书签修改word内容

  1. 1 //循环书签,判断书签名称,并为其赋值
  2. 2 foreach (MSWord.Bookmark bm in wordDoc.Bookmarks)
  3. 3 {
  4. 4 if (bm.Name == "billno")
  5. 5 {
  6. 6 bm.Select();
  7. 7 bm.Range.Text = "2008";
  8. 8 }
  9. 9 if (bm.Name == "dated")
  10. 10 {
  11. 11 bm.Select();
  12. 12 bm.Range.Text = DateTime.Now.ToString();
  13. 13 }
  14. 14 }

  6)关闭文件

  1. 1 wordDoc.SaveAs2(obj_FileName);//保存文件
  2. 2 wordDoc.Close();//关闭文档对象
  3. 3 wordApp.Quit();//关闭应用程序对象

  7)杀进程,有的情况下,关闭Word文件会不成功,会残留很多word进程

  1. 1 System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName("WINWORD");
  2. 2 foreach (System.Diagnostics.Process p in processes)
  3. 3 {
  4. 4 bool b = p.MainWindowTitle == "";
  5. 5 if (p.MainWindowTitle == "")
  6. 6 {
  7. 7 p.Kill();
  8. 8 }
  9. 9 }

asp.net使用动态模版导出word的更多相关文章

  1. PowerDesiger 15逆向生成工程E-R图及导出word表格

    应用环境:win8(64位)+oracle10g(32位)服务端+PowerDesigner15 需求:oracle数据库中的表结构是web工程框架hibernate 自动生成,现需要将数据库中已有的 ...

  2. ASP.NET导出word实例

    ASP.NET导出word实例 最近遇到一个题目就是如何在asp.net中将数据导出到word中,由于数据是动态的,所以需要在后台拼出想要的的格式,翻遍了网页找出了一个比较满意的代码,感谢那位高手.代 ...

  3. ASP.NET MVC 导出Word报表

    最近要做MVC导出Word报表功能.查了查资料发现一个好用的插件就是Aspose.Word.这个插件也很有名气,也很好用. 1.首先就是引用该插件 2.填充Word模版 3.后台操作 private ...

  4. 【C#点滴记录】ASP.NET 使用C# 导出Word 和Excel

    原文摘自 慧优米网,链接地址:http://huiyoumi.wang/upload/forum.php?mod=viewthread&tid=797&extra= 好了正文来了 今天 ...

  5. 在ASP.NET中将GridView数据导出到Word、Excel

    在ASP.NET中将GridView数据导出到Word.Excel asp.net,导出gridview数据到Word,Excel,PDF   #region Export to Word, Exce ...

  6. Asp.net通过模板(.dot/Html)导出Word,同时导出图片

    一.Office组件导出Word(服务器配置麻烦) 需要引用Office的DLL,在下文的附件中,不同的Offic版本用的不一样,虽然高级版本可以兼容低级的,不过,还是统一版本最好 贴上核心代码(转载 ...

  7. Java使用IText(VM模版)导出PDF,IText导出word(二)

    ===============action=========================== //退款导出word    public void exportWordTk() throws IOE ...

  8. java 导出word 并下载

    记录一下导出操作 源码: /************ * 导出word 并下载 * @param id 房号记录编号 * ***********************/ @RequestMappin ...

  9. 导出Excel And 导出word

      <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default6.aspx. ...

随机推荐

  1. 树莓派学习笔记(3):利用VNC远程控制树莓派

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi      等了一个十一假期,新买的B+终于到了.按照前两节的方法,重新安装了操作系统. 一.添加国内软件源 Rasp ...

  2. phpstorm开发环境搭建流程

    1.下载phpstorm 2.网上找注册码 phpstorm 8 license key Learn Programming===== LICENSE BEGIN =====63758-1204201 ...

  3. 非const引用不能指向临时变量

    没找到具体原因,MSDN看到下面这句,VC是从2008才有这一限制的,感觉就是从语法上对临时变量增加了限定,因为一般说来修改一个临时变量是毫无意义的,通过增加限定,强调临时变量只读语义.虽然实际上修改 ...

  4. MySQL默认INFORMATION_SCHEMA,MySQL,TEST三个数据库用途(转)

    本文简要说明了MySQL数据库安装好后自带的INFORMATION_SCHEMA,MySQL,TEST三个数据库的用途. 第一个数据库INFORMATION_SCHEMA:提供了访问数据库元数据的方式 ...

  5. 20155206赵飞 基于《Arm试验箱的国密算法应用》课程设计个人报告

    20155206赵飞 基于<Arm试验箱的国密算法应用>课程设计个人报告 课程设计中承担的任务 完成试验箱测试功能1,2,3 . 1:LED闪烁实验 一.实验目的  学习GPIO原理  ...

  6. C#基础之.NET环境下WebConfig的加密

    在将ASP.NET项目部署到服务器上时,内网环境下Web.Config往往是直接复制过去.对于外网环境,则需要对Web.Config文件进行加密. .NET环境下一共提供了2种方式的加密功能,分别是D ...

  7. POJ 3349&&3274&&2151&&1840&&2002&&2503

    (今天兴致大发学了Markdown,第一篇博客) 这次的主要都是hash的题目(当然这就意味这可以用map) hash的方式也有很多: 普通hash hash挂链 双hash以及自然溢出等 当然我还是 ...

  8. Keras实现风格迁移

    风格迁移 风格迁移算法经历多次定义和更新,现在应用在许多智能手机APP上. 风格迁移在保留目标图片内容的基础上,将图片风格引用在目标图片上. 风格本质上是指在各种空间尺度上图像中的纹理,颜色和视觉图案 ...

  9. 10、Dockerfile实战-PHP

    一.镜像制作步骤 安装编译依赖包 编译安装 配置 二.编写Dockerfile FROM centos:7 MAINTAINER QUNXUE RUN yum install -y gcc gcc-c ...

  10. vue-router单页应用简单示例(一)

    请先完成了项目初始化,具体请看我另一篇博文.vue项目初始化 看一下完成的效果图,很典型的单页应用. .vue后缀名的单文件组件   这里先说一下我对组件的理解.组件,顾名思义就是一组元素组成的一个原 ...