正 文

在.NET应用程序中轻松使用Microsoft Word功能


www.7dspace.com  更新日期:2005-12-11 7:12:40  七度空间


开发者经常考虑应该加强代码重用的力度,因为有些任务对他们来说就是利用现有的程序。一个典型的例子就是使用Microsoft Office套装的一个或多个程序,例如,你可以利用Excel表单建立一个图表或者一个财务报表,或建立一个包含用户注册信息的Word文档,在这篇文章中,我就是把Word嵌入到.NET程序中,以下就是实现过程。

程序的编制模式

Microsoft把.NET作为最终的解决方案似乎有些出人意料,因为在Microsoft Office的程序编制模式中并没有使用它,Office仍在使用以前的VBA(Visual Basic for Applications)模式,更重要的就是VBA是基于COM(Component Object Model)的,因此Microsoft Office将与.NET不能同互相通讯。但是,.NET拥有一项被称为COM互操作性(COM interop)的功能,它提供了一个可调用的文件夹来实现.NET和COM相互操作。

如果你使用的是Visual Studio .NET IDE,.NET是通过在运行期间的一个可调用文件夹来实现COM组件的使用,具体的步骤如下:

1、 从Project菜单中选择Add Reference
2、 选择Add Reference窗口下的COM分页,双击合适的类型库文件。
3、 选择OK完成引用的添加。

这时,Visual Studio .NET会把COM类型库文件的对象(objects)和成员(members)转化到相应的.NET程序集中。一旦生成.NET程序集,这些COM对象和成员就像.NET自己的类一样,你就可以很容易实例化一个类或调用一个成员。你也可以逆其道而行之,在基于COM的应用程序中使用.NET程序集,但这些超出了我们的讨论范围。

可以用下面的一个例子来进一步说明这一过程。让我们在一个简单的.NET Windows Form(窗体)中建立一个Word文档。

使用Microsoft Word

首先,在Visual Studio .NET中创建一个新的工程,将一个引用(reference)添加到Microsoft Word类型库中,我使用的是Microsoft Word 2003,所以类型库是Microsoft Word 11.0 Object Library。添加完引用(reference)后,就可以在代码中使用Word对象。列表A给出了VB.NET语言的例子,当用户按下Windows Form(窗体)中一个按钮时,程序将从本地的驱动器中打开一个已经存在的Word文档。

表 A

Imports System.Runtime.InteropServices
Imports Microsoft.Office.Interop.Word
Public Class Form1
Inherits System.Windows.Forms.Form
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
Dim strFileName As String
Dim word As New Microsoft.Office.Interop.Word.Application
Dim doc As Microsoft.Office.Interop.Word.Document
Try
doc = word.Documents.Open("c:\test.doc")
doc.Activate()
Catch ex As COMException
MessageBox.Show("Error accessing Word document.")
End Try
End Sub
End Class

请注意代码中下面的几个地方:

· System.Runtime.InteropServices 的名称空间将被引入并与COM和.NET共同运行。它包含了COMException类。

· Word对象的.NET文件夹是包含在Microsoft.Office.Interop.Word的名称空间中的(就是刚才添加到工程中的引用)。

· 用Word 名称空间的Apllication类来访问Word应用程序。

· 用Word 名称空间中的文档类来操作Word文档。

· 应用程序中的文档属性——Open函数加载已存在的文档,同时它还包含了一个Close函数。

· Document类的Activate函数用来在新的Word窗口中打开文档。

· 访问Word文档的代码包含在Try/Catch模块中,它可以通过COMException类捕捉COM的错误,用MessageBox.Show函数替代了Office VBA MsgBox函数。

表B就是相应的C#代码

3页,页码:[1] [2] [3] 

上一篇:利用NET建立一个简单用于文件传输的WEB服务器
下一篇:创建代理来访问.NET Web Service
作者:  来源:开发者在线 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐