通常许多的知识都是在知与不知之间,不一定非要很深奥,特别是Excel这样的应用工具层面,明明已经摆在那里,你不知道时,永远地不知道,知道了,简单学习下就已经实现出最终的功能效果。
在程序猿世界里,也是一样,很多工具类的功能,可以在代码里复用,当不知道时,自己从头造轮子,也是一件吃力不讨好麻烦事。
此篇提供一些简单的知识点,部分有代码段,部分只是操作界面即可得到,供VSTO新手们学习。
查找枚举型的完整命名空间
在录制宏中,得到的代码,虽然绝大部分是很容易改写成VB.Net或C#代码的,但有一个小问题是当录制出来的代码有枚举类型时,在VBA里的枚举是不带命名空间的,在VSTO里,是需要补全此命名空间的,怎样可以补全这些命名空间不报错?
以下为VBA代码,通过录制宏即可得到,将单元格内容居中显示。
代码语言:javascript复制Sub 宏1()
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
End Sub
将其改为VSTO的.Net代码,有xlCenter、xlContext的枚举类型的问题需要补全。 有些时候看VS的参数提示可以得到,但有些是得不到的。
参数提示也不能知道哪个命名空间
参数提示可以知道哪个命名空间
在不能知道时,有个很简单的方法,通过查找对象浏览器即可得到
对象浏览器入口
搜索结果简单识别下即可找到答案
配置信息存储
许多时候需要存储一些配置信息,可以自行新建xml、ini文件等方式存储,但其实有一更简单的方式,直接存储在Setting类上,当调用时,还可以有强类型引用的方式调用,智能提示并有数据类型区分。
整个设置过程中,只需界面的方式设置,同时选择对应的数据类型,同时需要注意范围是用户还是应用程序级的。
用户的话,可以供用户修改,程序级的就是不修改的,固定保存到程序中的,比硬代码写在代码里维护要方便。
Setting界面化设置
同样地数据类型方面,可以有复杂的集合类型,加上自己用分隔符分开,可以满足存放一个多列数据表清单数据。
集合数据类型
修改代码
代码语言:javascript复制 Properties.Settings.Default.SpotLightColor = colorDialog.Color;
Properties.Settings.Default.Save();
读取代码
代码语言:javascript复制 SolidBrush brush = new SolidBrush(Properties.Settings.Default.SpotLightColor);
颜色的转换
在这个ColorTranslator工具类中,有我们日常所要用到的颜色转换现成功能,颜色有以下四种分类 Win32颜色、Html颜色、Ole颜色和标准的.Net颜色。
对于我们OFFICE使用的颜色,就是Ole颜色,对应于VBA接口的Color属性值
一般来说在VSTO的.Net环境下,引用的颜色是标准.Net颜色,需要和OFFICE的颜色进行转换,转换的代码也异常简单,只需调用一个方法即可。
Color转换
日期的转换
同样地,在日期转换上,也直接有OLE的日期格式,这个方法也是后来偶然知道的,在Excel自定义函数里还傻傻地写过一个转换函数。
OLE日期转换1
OLE日期转换2