设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: faunus
打印 上一主题 下一主题

【练习】如何获得一个COM对像的真实类型

[复制链接]
跳转到指定楼层
1#
发表于 2014-2-24 17:14:48 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 faunus 于 2014-2-26 11:02 编辑

先上代码:

  1.         private void ThisAddIn_Startup(object sender, System.EventArgs e)
  2.         {
  3.             //Application 的三种调用形式
  4.             Excel.Application app;
  5.             app = Application;
  6.             app = this.Application;
  7.             app = Globals.ThisAddIn.Application;//在RIBBON中,只能这样调用。

  8.             //获得基本对像
  9.             Excel.Workbook book = app.ActiveWorkbook;
  10.             Excel.Worksheet sh = book.ActiveSheet;

  11.             //单元格对像
  12.             Excel.Range rA1 = sh.Cells[1, 1];

  13.             //开始随便撸
  14.             rA1.Value = "hello";
  15.             rA1.Formula = "=1+100";

  16.             //如何获得对像的真实类型
  17.             string typeA = rA1.GetType().ToString();
  18.             string typeB = Microsoft.VisualBasic.Information.TypeName(rA1);
  19.             System.Windows.Forms.MessageBox.Show
  20.                 (
  21.                     string.Format(
  22.                         "TypeA:{0},TypeB:{1}",
  23.                         typeA,
  24.                         typeB)
  25.                 );
  26.         }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2014-2-24 17:23:02 | 显示全部楼层
结果:




可以看到:
通过 GetType() 方法,
仅仅只能获得一个通用的COM类型说明: System._ComObject。
这个显然不是我们想要的,由于C#3.0开始提供动态类型,类型在编译期并不能够确定。
为此我们要想采用新的方法。
Microsoft.VisualBasic.Information.TypeName(rA1);
这明返回的类型说明正是我们需要的 Range 。


这时 vb.net 比 c# 在这个地方在略胜一筹了
如果是 VB.net 无需额外的引用,
而在 C# 中必须额外多一步操作,引用 Microsoft.VisualBasic 类型库。


其实对一些有代码洁癖的人来说,一定还是不够爽,
请不要着急,我会在接下来的 高级课程中 为大家提供一个纯 C#的解决方法,
不过要有心理准备哦,方法挺高级的,请先过了 初级班、中级班吧!






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
3#
 楼主| 发表于 2014-2-24 20:19:49 | 显示全部楼层
cc1027cc 发表于 2014-2-24 17:38
错误        9        命名空间“Microsoft.VisualBasic”中不存在类型或命名空间名称“Information”。是否缺少程序集引 ...

需要对程序集进行引用:Microsoft.VisualBasic


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
4#
 楼主| 发表于 2014-2-24 22:20:32 | 显示全部楼层
tianping 发表于 2014-2-24 22:18
好深奥!
想看看迷底

现在不能看,那个太复杂,你一定会陷进去了。
5#
 楼主| 发表于 2014-2-26 21:21:37 | 显示全部楼层
小雨新一 发表于 2014-2-26 21:00
老师,请问我也和4楼碰到一样的问题,您说添加引用Microsoft.VisualBasic,然后我这台电脑没查找到,还请帮 ...

点程序集
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-15 04:32 , Processed in 0.087036 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表