Office中国论坛/Access中国论坛

标题: 【原创】Excel外接程序开发FAQ Excel外接程序开发FAQ,by寂静岭 [打印本页]

作者: 紫电    时间: 2014-2-22 16:53
标题: 【原创】Excel外接程序开发FAQ Excel外接程序开发FAQ,by寂静岭
本帖最后由 紫电 于 2014-2-22 16:57 编辑

Excel外接程序开发FAQ
讲师:寂静岭
Q1:C#需要像VB开发外接程序一样,创建Excel对象吗?
A1:不需要,App实例已经在插件启动的时候创建好了,可以直接使用Application访问Excel对象。


Q2:[attach]53129[/attach]这是什么玩意儿?
A2:命名空间别名,引用,以后就可以直接使用Excel了。这样可以少写几行。


Q3:字体需要调整吗?
A3:建议大家把字体设置为Consolas,然后大小设定为12 或者 14 根据大家的显示器分辨率来。XP的同学可能没有这个Consolas字体,就用宋体也可以。宋体太锐利了,看多了容易烦躁。


Q4:如何绑定Excel对象的相关事件,能否给出例子?
A4:[attach]53130[/attach]。


Q5:+=不是相当于在原有变量基础上,再加一个东西么?
A5:其实你说的没错但那只是默认的情况,这个就要说到C#的高级特性,操作符重载了,你只要知道+=  从形象上来看,就是堆叠,增加 就行了。给Event堆上一个处理者,你不想处理就可以不用写,一行都不用,你想处理,才写。操作符重载大家在相当长的一段时期内都不太会用到。多继承算是高级C#特性了,大家混个脸熟就行了,尽量不要让自己的类产生这样的多继承,设计模式的东西会在中级和高级班讲的。


Q6:也就是说,只要是事件处理,都要用+=来new出一个新的事件对象?
A6:不是new出一个事件对象,而是 给一个已知事件,绑定一个处理函数。函数名随便起,不一定非得按我那种起法,必须符合EventHandler的声明。


Q7:[attach]53136[/attach]前面括号里面是什么东东?
A7:你们可以试下NewWorkbook 事件,结果会很奇特的 ,tab出来的代码会编译不通过,Application.NewWorkbook +=new Excel.AppEvents_NewWorkbookEventHandler(OnNewWorkbook); 这个和事件的性质没有关系,而是因为Application类是一个 “多继承” 类。[attach]53131[/attach]
注意看Application有两个父类,但很不巧,这两个父类都有一个叫NewWorkbook的,所以编译器就傻掉了,他不知道你要用哪个。所以你要告诉它。这是另一个[attach]53132[/attach] ,可以清楚的看到这个并不是事件而是一个叫NewFile类型的东西,总之不是事件。


Q8:这个接口的内容在哪里看到的?
A8:F12可以看到定义,光标先停上去。
[attach]53133[/attach][attach]53134[/attach][attach]53135[/attach]



记录人:紫电


作者: faunus    时间: 2014-2-22 17:50
这个其实挺重要的,
当方法与事件重名实,
事件不能智能提示了。

再接再励,鼓励加精。
作者: zhuyiwen    时间: 2014-2-22 19:41
赞一个!
作者: tianping    时间: 2014-2-22 20:58
先顶再慢慢消化。谢谢寂老师,谢谢紫电
作者: tmtony    时间: 2014-2-22 22:57
好贴!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3