具体思路:

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

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

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

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

  优点:

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

  缺点:

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

  操作过程&代码:

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

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

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

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

  2)准备工作

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

  3)拷贝模版生成新文件

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

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

 wordDoc = wordApp.Documents.Open(ref obj_FileName);//打开新文件,进行操作

 wordDoc.Activate();//设置现在操作的文件

  5)依据书签修改word内容

  //循环书签,判断书签名称,并为其赋值
foreach (MSWord.Bookmark bm in wordDoc.Bookmarks)
{
if (bm.Name == "billno")
{
bm.Select();
bm.Range.Text = "";
}
if (bm.Name == "dated")
{
bm.Select();
bm.Range.Text = DateTime.Now.ToString();
}
}

  6)关闭文件

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

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

 System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName("WINWORD");
foreach (System.Diagnostics.Process p in processes)
{
bool b = p.MainWindowTitle == "";
if (p.MainWindowTitle == "")
{
p.Kill();
}
}

调用Microsoft.Office.Interop.Word生成自定义Word文档的更多相关文章

  1. window2008 64位系统无法调用Microsoft.Office.Interop组件进行文件另存的解决办法

    生成execl时遇到的问题: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005 ...

  2. IIS 调用Microsoft.Office.Interop.Word.Documents.Open 返回为null

    控制面板->管理工具->组件服务->计算机->我的电脑->DCom配置->找到Microsoft Word文档 之后 单击属性打开此应用程序的属性对话框. 2. 单 ...

  3. 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。

    无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Wor ...

  4. (转)无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。此操作失败的原因是对 IID 为“{00020970-

    HRESULT:0x80030002 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft ...

  5. System.InvalidCastException: 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。

    报错:System.InvalidCastException: 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接 ...

  6. 关于C#低版本升级高版本时,项目中引用Microsoft.Office.Interop.Word,程序提示不存在类型或命名空间名office.

    Report.cs里using Microsoft.Office.Interop.Word;就会报错:编译器错误消息: CS0234: 命名空间“Microsoft.Office”中不存在类型或命名空 ...

  7. Microsoft.Office.Interop.Word.DocumentClass.SaveAs 命令失败

    asp.net 常用的生成word功能,代码也是网上常见的,自己本地反复测试过没问题.serves 2003下运行没问题,可是发布到2008上就出错.组件权限已配置,windows目录下temp权限已 ...

  8. Microsoft.Office.Interop.Word 创建word

    Microsoft.Office.Interop.Word 创建word 转载:http://www.cnblogs.com/chenbg2001/archive/2010/03/14/1685746 ...

  9. 关于.net Microsoft.Office.Interop.Word组建操作word的问题,如何控制word表格单元格内部段落的样式。

    控制word表格单元格内部文字样式.我要将数据导出到word当中,对于word表格一个单元格中的一段文字,要设置不同的样式,比如第一行文字作为标题要居中,加粗,第二行为正常的正文. 代码如下 publ ...

随机推荐

  1. pycharm2019注册码一键实时获取,永久有效!

    pycharm2019专业版激活码 56ZS5PQ1RF-eyJsaWNlbnNlSWQiOiI1NlpTNVBRMVJGIiwibGljZW5zZWVOYW1lIjoi5q2j54mI5o6I5p2 ...

  2. 限流——spring-cloud-zuul-ratelimit

    先留个坑,慢慢补 git代码Demo:https://github.com/islowcity/spring-cloud-zuul-ratelimiter.git 有时间再写分析

  3. [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析

    [DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 五.如何做全站采集 场景模拟 接上一篇, JD SKU对应的店铺信息是异步加载 ...

  4. Kruskal算法-HDU1863畅通工程

    链接 [http://acm.hdu.edu.cn/showproblem.php?pid=1863] 题意 Problem Description 省政府"畅通工程"的目标是使全 ...

  5. Daily Scrumming* 2015.12.20(Day 12)

    一.团队scrum meeting照片 二.成员工作总结 姓名 任务ID 迁入记录 江昊 任务1090 https://github.com/buaaclubs-team/temp-front/com ...

  6. POI (Apache POI)

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 基本功能 编辑 结构: HSSF - 提供读写Mi ...

  7. Fiddler 跟踪手机请求.

    1. 想着跟踪下手机的部分请求, 所以使用fiddler 挂代理的方式来处理. 步骤 安装fiddler. 直接百度 安装即可.. 2. fiddler设置 tool-options设置 我试过解密h ...

  8. js字符串和正则表达式

    字符串的生成转换 你可以将任何类型的数据都转换为字符串,你可以用下面三种方法的任何一种: var myStr = num.toString(); // "19" var myStr ...

  9. yum install 报错[Errno 14] curl#37 - Couldn't open file /mnt/repodata/repomd.xml

    1.然后按照网上的一些修改,先是执行: yum cleam all 然后 yum makecache,问题还是没解决,继续报错. 其实这两条命令就是清空缓存,然后再重新缓存的意思,有时候可能有效. 2 ...

  10. pycharm5.0 快捷键大全osx

    官网链接https://resources.jetbrains.com/assets/products/pycharm/PyCharm_ReferenceCard_mac.pdf 一直想给别人安利py ...