C#操作Office.word(一)

该文章主要是讲述如何使用VS2010创建word文档,因为在项目中我们可能需要点击一个按钮把数据库中的项目表单或图片显示到word文档中,因此该文章主要分析如何使用VS2010创建word文档并填写相应的内容。主要通过C#引用Miscrosoft Word 14.0 Object Library实现的。

一.创建工程

首先是使用VS2010创建一个windows窗体程序,并添加如下图所示的界面。

C#操作Office.word(一)

点击创建按钮,就能生成相应的word文档,文档的内容和格式可以在程序代码中设置。

二.添加引用

然后需要引用COM中的Miscrosoft Word 14.0 Object Library到工程中去。在"解决方案资源管理器"窗口中右击"引用"对象,在弹出的快捷菜单中选择"添加引用"命令,弹出"添加引用"对话框中选择COM选项卡,选择"Miscrosoft Word 14.0 Object Library"。如下图所示:

C#操作Office.word(一)

添加后,查看工程解决方案中引用,会看到引用到工程中的word对象如下图所示。这里会引用Microsoft.office.Interop.Word对象。

C#操作Office.word(一)

三.源代码

新建winform工程,在Form1的窗体代码中添加下面的代码:

//引用word对象类库和命名空间
using MSWord = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;

添加源程序代码如下所示:

private void btnCreate_Click(object sender, EventArgs e)
{
//初始化变量
object Nothing = Missing.Value; //COM调用时用于占位
object format = MSWord.WdSaveFormat.wdFormatDocument; //Word文档的保存格式
//wordApp = new MSWord.ApplicationClass(); //声明一个wordAPP对象
wordApp = new MSWord.ApplicationClass();
worddoc = wordApp.Documents.Add(ref Nothing, ref Nothing,
ref Nothing, ref Nothing);
//向文档中写入内容
wordstr = "hello,Office word!";
worddoc.Paragraphs.Last.Range.Text = wordstr;
//保存文档
path = "E:" + "\\" + "test"; //设置文件保存路劲
worddoc.SaveAs(ref path, ref format, ref Nothing, ref Nothing,
ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing,
ref Nothing, ref Nothing, ref Nothing, ref Nothing);
//关闭文档
worddoc.Close(ref Nothing, ref Nothing, ref Nothing); //关闭worddoc文档对象
wordApp.Quit(ref Nothing, ref Nothing, ref Nothing); //关闭wordApp组对象
MessageBox.Show("文档创建成功!"); }//btnCreate_Click

四.运行结果

点击运行,会在E:\路径下创建一个test.doc的word 2003的文件,并填写内容。如下图所示:

C#操作Office.word(一)

五.错误与分析

(1)在运行前可能会出现错误提示:无法嵌入互操作类型"Microsoft.Office.Interop.Word.ApplicationClass"。解决方法是:在Visual Studio 中点击菜单项"视图->解决方案资源管理器"在其中点开"引用"文件夹,在"Microsoft.Office.Interop.Word" 上点击鼠标右键选择"属性"。将属性中的"嵌入互操作类型"的值改为"false"即可。如下图所示:

C#操作Office.word(一)

(2)同时代码中的object Nothing = Missing.Value表示缺少的值,在使用C#->COM时某个参数不会被使用时用于占位,类似于C++中NULL,但C#中null与它不同,所以当你调用COM使传空或占位就需要该代码实现相同的功能。注意Missing.Value的命名空间在System.Reflection中.通常Microsoft Word 11.0 Object Library对应Word 2003,Microsoft Word 12.0 Object Library对应Word 2007,如果想创建docx文档,设置word格式时为object format =MSWord.WdSaveFormat.wdFormatDocumentDefault.

(3)如果用到了Excel或者ppt等的控制,要加载相应的COM库文件,Excel的加载如下图所示:

C#操作Office.word(一)

六.总结

最后推荐大家看看这篇博客,它详细介绍了C#操作office文档.http://blog.csdn.net/wudi626/article/details/2337857同时我上面的知识也参看了一些博客,还有刘丽霞等编写的《C#范例开发大全》,在此感谢这些人.这篇文章主要是在做数据库系统中要引用到打印报表,显示为pdf|word格式,所以才写了该文章,后面还想写一篇关于word中插入表格和图片的word操作,至于页面布局等我不想涉及,但思想都是一致的.希望文章对大家有帮助,同时有不足或错误的地方,见谅!

补充:

http://blog.csdn.net/wudi626/article/details/2337857

http://www.cnblogs.com/tanshuicai/archive/2009/06/06/1644629.html

http://blog.sina.com.cn/s/blog_45eaa01a0102vs9j.html

上一篇:ExtJS学习-----------Ext.Array,ExtJS对javascript中的Array的扩展


下一篇:04 flask 项目整体构建