在用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时,会弹出以下对话框:

一个查看类型库(Type Library)详细信息的工具

而引用Office XP以后版本的dll就不会出现这个对话框。 

        我们在C# Project中添加引用时,可以看到下面这个对话框:

一个查看类型库(Type Library)详细信息的工具

        这个对话框列举了当前系统中所有的COM组件,但是它提供的关于类型库的信息并不详细,而且没有搜索功能,用起来不是很方便。
        其实,类型库的信息存储在注册表的HKEY_CLASSES_ROOT->TypeLib下:

一个查看类型库(Type Library)详细信息的工具

        我们可以使用Microsoft.Win32.RegistryKey类来获取这些信息:

一个查看类型库(Type Library)详细信息的工具

        搜索:

一个查看类型库(Type Library)详细信息的工具

        类型库详细信息:

一个查看类型库(Type Library)详细信息的工具

        代码下载:Down 

        下载内容包括:

一个查看类型库(Type Library)详细信息的工具

 

        TypeLibs的详细内容:

  1一个查看类型库(Type Library)详细信息的工具using System;
  2一个查看类型库(Type Library)详细信息的工具
  3一个查看类型库(Type Library)详细信息的工具namespace TypeLibBrowser
  4

        再回到本文开头提出的两个问题,我们可以发现在“详细信息”中包含了我们想知道的答案。

        BTW:微软为Excel VBA提供的帮助本身就包含两个版本:2000和2002的,2003的应该与2002的相同,需要这个帮助(包括VBA For Access 2000、Excel 2000 、Excel 2002、Outlook 2000、Outlook 2002、Word 2000、Word 2002的资料)的朋友可以留下自己的Email,文件有点大,我无法上传,这些帮助对我们使用C#操作Office大有裨益!
        
        一个查看类型库(Type Library)详细信息的工具

相关文章:

  • 2022-01-21
  • 2022-12-23
  • 2022-01-01
  • 2022-01-05
  • 2022-12-23
  • 2021-11-29
  • 2022-12-23
猜你喜欢
  • 2021-08-14
  • 2021-07-09
  • 2022-12-23
  • 2022-01-13
  • 2022-12-23
  • 2021-09-02
相关资源
相似解决方案