.net中的如何使用Excel Automation 服务?

C#对于latebinding的确没有特别支持,就像C++那样;)
但是由于.NET程序的跨语言特性非常好,和latebinding的部分可以分离出来使用VisualBasic.NET做,对整体应用的结构不会有什么影响。
如果是静态帮定的话,可以用aximp, tlbimp包装一个CCW,然后调用就像.NET组件一样方便了。
因为象word9.olb,word10.olb,excel9.olb这类东东是unmanaged,所以第一
步是把这些个库转成.net能用的形式(以word为例)

1.使用Tlbimp这个工具将word9.0的对象库文件word9.olb转换成为dll,这样才能做为.Net平台Assembly来使用:)操作如下:
TlbImp word9.olb word.dll
只要有了这个Excel.dll,现在我们就能使用Excel的各种操作函数了。
"word9.olb"文件在安装office2000后的目录中
2.把这个dll考到自己的文件夹下
3.
Excel.Application objApp = null;
Excel._Workbook objBook;
Excel._Worksheet objSheet;
objApp = new Excel.Application();
objBook = (Excel._Workbook)(objApp.Workbooks.Add(".\\Excel Templates\\Tp.xlt"));
objSheet = (Excel._Worksheet)objBook.ActiveSheet;
就可以用
objSheet.Cells[shrow,shcol]=dTbl.Rows[row][col];
不过记住,再用Excel命名空间重的所有对象市都要申请一个显式的引用,用完后将所有引用赋予null这样才能保证在Excel.Application对象关闭之后彻底回收为Excel组件分配的资源,并调用
System.Runtime.InteropServices.Marshal.ReleaseComObject(o)
(o为用过的Excel Namespace重的对象)
清除Excel的线程。必要时运行GC.Collect();回收资源。

参考如下网址:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q317109
http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q302084

================================================================
--- 湘江水逝楚云飞 ---
★★ 楚云飞 ●

Published At
Categories with Web编程
Tagged with
comments powered by Disqus