[VSTO系列]二、简单的UI设计/QQ联系人导出(上)
接上一篇:http://www.cnblogs.com/longqi293/archive/2010/12/08/vstoforexcel1.html
在日常的生活中,QQ已经是联系我们人际关系的一条重要纽带,就像我们的手机,手机中存在很多联系人,并且现在提供了很多软件对不同平台的手机作联系人的备份,可是对于QQ呢?除了会员以外,好像要导出联系人进行备份有点麻烦。在这里,结合我们的文章,给出一个比较“牵强的”解决方案,主要针对于非QQ会员的朋友。
当然,在这里主要还是为了介绍VSTO For Excel这门技术,也许这个例子举得不很恰当,也请大家多多包涵,毕竟条条大道通罗马……
回到今天的主题,我们还是进一步的了解VSTO为我们提供的强大功能吧。
什么是Ribbon?
自Office 2007以来,Ribbon UI得到了越来越广泛的应用。
Ribbon UI的历史
Ribbon主要来自于此前的Office组件。当时由于原有的界面已经过时,并且用户抱怨经常找不到要用的功能。因此微软寻求各种方法用于代替传统的基于菜单和工具栏的界面。在进行了大量的测试之后,微软的程序员找到了如今我们熟悉的Ribbon界面。
Ribbon剖析
Ribbon的菜单和按钮主要集中在程序最上方,以tab和分类的形式展现,功能的布局很有条理。某些按钮平时是隐藏的,只有需要用时才会自动出来。此外,据微软称,Ribbon专门为1024X768的分辨率做过优化。之前的ALT+F组合键打开程序菜单的方法依然有效。
为我们的Add-in添加Ribbon——
我们看到,创建好的Add-in项目只有代码文件,要添加RibbonUI界面,则需要右键单击项目,使用“添加Windows窗体”功能进行添加,如下图:
再添加好窗体后,我们双击新添加的那个文件,即可打开UI设计界面。
哈哈,是不是很熟悉啊,对了,这就是我们的Add-in插件所使用的UI,我们可以像设计桌面程序一样去做Ribbon的设计,具体内容在这里就不赘述了,大家可以自己研究研究,比较容易上手。
开始我们的VSTO代码设计——
我们的Addin程序中,我们把逻辑代码写到那个“功能按钮”之下,主要逻辑代码如下:
private void button1_Click(object sender, RibbonControlEventArgs e)
{
Excel.Worksheet activeWorksheet = (Excel.Worksheet)Globals.ThisAddIn.Application.ActiveSheet;
foreach (Excel.Range rng in activeWorksheet.get_Range("A1:A3",Type.Missing))
{
MessageBox.Show(rng.Value2.ToString());
}
}
看了很简单吧,如果在这里你还不熟悉Range,Excel,ActiveSheet这些关键词,建议你先回到上一篇文章中,查阅一下Excel对象模型的相关内容,相信就能很快回忆起来了http://www.cnblogs.com/longqi293/archive/2010/12/08/vstoforexcel1.html
在这里,我们的代码主要完成了一件事情,就是当用户点击那个功能按钮后,我们就显示单元格A1到A3的内容。那结果是不是如我们所说呢?在调试后,的确能够达到效果。那么,我们今天的路就走完一半了。来回顾一下:
1、 我们知道如何为Add-in项目添加RibbonUI
2、 知道了用代码获取某一区域的单元格内容
那接下来,我们就跳出技术的圈圈,看看QQ联系人这回事儿吧。
怎么导出联系人?
这是个问题,方法种类繁多,会员直接跳过……在这里我提供一个思路吧,QQ邮箱想必大家都用过,他有一个同步联系人的功能,最后还有一个导出联系人的功能,看了我是很激动啊。
经过试验,导出的这份QQ邮箱联系人的Excel文档,包含了我所有QQ联系人的邮箱号,刚好大家的邮箱号基本都是用QQ号做的账户名……
恩,到这里,这篇文章就写到这吧。暂且卖个关子(其实是工作太忙了,写不完,不好意思啊……)
下一篇文章,将会和大家一起实现那个联系人的处理功能,谢谢大家。如果平常有什么联系人导出导入的工具提供就好了,发现如果不给疼讯缴纳几个会员费,这个功能怎么就那么麻烦呢……求免费好用的工具…………
出处:http://longqi293.cnblogs.com
本博文欢迎大家浏览和转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,在『参考』的文章中,我会表明参考的文章来源,尊重他人版权。若您发现我侵犯了您的版权,请及时与我联系。
本篇博文 by Jack Fan is licensed under a Creative Commons 署名-非商业性使用-相同方式共享 2.5 中国大陆 License.
这是我的公众号,【代码只是副业】