循序渐进,探寻Excel二次开发.NET源码(1)

MS Excel功能我就不用多说了,总的来说强大方便灵活,应用广泛。用Excel来做数据存储、报表并实现打印非常方便,通常办公处理。值得高兴的是Excel提供了二次开发的功能以满足各个不同层次的需要,为程序员自己动手模拟Excel操作提供了极大的便利性,并可充分利用Excel提供的特性开发出更多实用的应用。

  以往做Excel二次开发都用VBA,它是VB的一个简化版,我们打开Excel后单击工具——宏——Visual Basic编辑器就可以进行二次开发。我们现在要说的不是这种VBA二次开发,而是在.NET下进行二次开发。

  我们的最终目标是:利用.NET提供的开发工具快速实现Excel的二次开发,这其中包括最基本的单元格及带区数据存取、合并、字体颜色、边框及网格线等,由浅入深,由基本实现到组合功能,最终实现报表设计、套打、模板打印,充分利用Excel自身强大功能搞定任意复杂格式、报表、统计图形分析。

  从本篇开始,我们将以循序渐进,探寻Excel二次开发.NET的方式,逐步讲述Excel的二次开发并实现以下几点:

 1、如何将各版本Excel(COM类型库) 转换生成.Net公共语言运行库程序集如Interop.Excel.dll
 2、如何引用Excel库或已生成的程序集
 3、创建Excel实例
 4、打开Excel工作薄工作表和模板
 5、增、删、改、插入、定位、重命名工作表
 6、获取活动工作表指定范围单元格及带区
 7、读、写单元格内容
 8、向带区中写内容
 9、单元格合并
 10、字体及颜色
 11、边框及网格线
 12、保存、另存
 13、打印、预览
 14、彻底关闭Excel进程
 15、综合应用,通打天下报表
 ...

  本篇中,将说一说在项目中添加Excel引用的方法。以后的所以篇目中,都假设读都对VS 2003开发平台有一定的了解,所以,省略一些文字,如新建立一个项目什么的,我想那些就没必要了。

  我的宗旨:简单快捷,易用实用,因此,在以后的篇目中以程序居多,描述尽量少些,多些注释。但是这篇,哈哈,只有描述了。

第一步:
在项目的引用节点单击右键,在弹出的菜单中单击添加引用...
在弹出的对话框中单击COM项,找到Microsoft Excel 11.0 Object Library
并单击选中,然后单击选择按钮,如图“引用Excel2003”。

从中我们可以看出是引用的Excel.Exe文件,这是Excel2003版。Excel2000及Excel2002即Excel XP
COM项见“Excel版本对照表”。

第二步:
引用Excel2003后,会在引用节点中增加Excel等节点,如图“引用Excel2003后可删除不必要的引用”。

进入项目的bin/Debug目录可以看到,相应的增加了Interop.Excel.dll、Interop.Microsoft.Office.Core.dll、Interop.VBIDE.dll三个库文件,它们都是.Net将 COM 类型库中的类型定义转换为.Net公共语言运行库程序集中的等效定义生成的文件。
我们只需要引用Interop.Excel.dll就可以了,后面的两个文件是支持文件,不添加这两个文件的引用时在调试程序时如果有编译不通过的如语法错误会提示未能找到依赖项Interop.Office、Interop.VBIDE,一般这是个假象,除非是你和程序确实用到了他们,如果没有语法错误,编译器就不会提示了:)。

我们在引用中将Microsoft.Office.Core、stdole、VBIDE选中删除掉。也可以将Excel引用删除掉重新直接引用Interop.Excel.dll。

另一种方法是直接添加对Interop.Excel.dll的引用。


生成Interop.Excel.dll的另一方法:

以上是可视化自动生成Excel对应的程序集,也可以用如下的方法生成。

打开Visual Studio .Net2003命令提示,运行
TlbImp Excel.EXE Interop.Excel.dll

如果是Excel2000,则
TlbImp Excel9.olb Interop.Excel.dll

当然,第一参数Excel.EXE(Excel9.olb)要指定目录(Office2000安装目录),如果不指定,需要把它拷贝到VS.Net安装路径下
如C:/Visual Studio.Net/SDK/v1.1/Bin;
同理,第二参数Interop.Excel.dll是生成的对应的动态库,如果不指定目录,默认生成在VS.Net安装路径BIN下 ,你可以用你自己喜欢的名字
取代Interop.Excel.dll,生成之后你就可以在VS.Net开发环境项目中添加对它的引用了。

Tlbimp.exe为类型库导入程序,它将 COM 类型库中的类型定义转换为公共语言运行库程序集中的等效定义,关于它的详细使用参见MSDN。


用第一种方法和第二种方法引用的库和默认文件目录为分别如下:
Excel 2000是
Microsoft Excel 9.0 Object Library
 C:/Program Files/Microsoft Office/Office/EXCEL9.OLB

Excel 2002(XP)是
Microsoft Excel 10.0 Object Library
 C:/Program Files/Microsoft Office/OFFICE10/EXCEL.EXE

Excel 2003是
Microsoft Excel 11.0 Object Library
 C:/Program Files/Microsoft Office/OFFICE11/EXCEL.EXE

----------------------------------------Excel版本对照表----------------------------------------

 文件/版本  Interop.Excel.dll Interop.Office.dll   Interop.VBIDE.dll  添加引用/COM组件
 2000  V1.3.0.0  V2.1.0.0  V5.3.0.0  Microsoft Excel  9.0 Object Library(EXCEL9.OLB)
 2002(XP)  V1.4.0.0  V2.2.0.0  V5.3.0.0  Microsoft Excel 10.0 Object Library(Excel.EXE文件)
 2003  V1.5.0.0  V2.3.0.0  V5.3.0.0  Microsoft Excel 11.0 Object Library(Excel.EXE文件)

相关源码下载信息请访问:
http://blog.csdn.net/flygoldfish

 

你可能感兴趣的:(循序渐进,探寻Excel二次开发.NET源码(1))