在用C#操作Excel作报表的时候,你可能遇到这样的困扰(用其他COM时也存在类似的问题):引用的组件是哪个版本的Office提供的;想使用tlbimp得到excel.dll,却不知道对哪个文件执行tlbimp(Excel9.olb或Excel.exe)。对于前者我自己深有体会:Office XP以后的版本比Office 2000提供的一些方法的参数要多(比如Excel.Workbooks.Open方法),而且引用Office XP以后版本的dll的.NET应用程序在安装Office 2000的系统上可能会出问题(我遇到过由Excel._Worksheet CurSheet = (Excel._Worksheet)WorkBook.Sheets[1];引发的null值问题),另外,不同版本的Excel引发的客户操作也可能是不同的,如果引用Office 2000下的dll后使用Excel.Workbooks[0].Worksheets[0].Delete()方法删除一个sheet时,会弹出以下对话框:
而引用Office XP以后版本的dll就不会出现这个对话框。 我们在C# Project中添加引用时,可以看到下面这个对话框:
这个对话框列举了当前系统中所有的COM组件,但是它提供的关于类型库的信息并不详细,而且没有搜索功能,用起来不是很方便。 其实,类型库的信息存储在注册表的HKEY_CLASSES_ROOT->TypeLib下:
我们可以使用Microsoft.Win32.RegistryKey类来获取这些信息:
搜索:
类型库详细信息:
代码下载:Down 下载内容包括:
Life is like a boat, and I'm at sea.
昵称: [登录] [注册]
主页:
邮箱:(仅博主可见)
验证码: 看不清,换一个
评论内容:
登录 注册
[使用Ctrl+Enter键快速提交评论]