Excel催化剂插件从2018年1月1日开始运营,到今天刚好一周年,在过去一年时间里,感谢社区里的许多友人们的关心和鼓励,得以坚持下来,并收获一定的用户量和粉丝数和少量的经济收入回报和个人知名度的提升. 虽然还没有达到预期的效果,但相信用心去做,无论是为理想.为情怀,为现实经济回报,在新的一年,仍然抱有感恩的心,继续贡献自我的一些微博之力. 在新的2019年,若时间精力的许可,可适当地开发Excel催化剂的源代码,供广大Excel爱好者特别是有开发能力的高级用户们一起学习观摩,算是再次给Exce…
在Excel催化剂中,大量的自定义函数使用了动态数组函数效果,虽然不是原生的Excel365版效果(听说Excel2019版取消了支持动态数组函数,还没求证到位,Excel365是可以用,但也仅限于部分尝鲜用户可以用上,大部分Excel365用户还没推送成功),但对于自定义函数这条路线,可以实现类似效果,已经是非常震撼及使用面非常广大了. 顺便插一句,不是每个中国企业都能承担起高昂的软件更新费用,OFFICE软件非常大的一个坑爹之处是,旧版本升级到新版本,没有补差价升级一说,一律是重新购买,旧的…
Excel催化剂开源第23波-VSTO开发辅助录入功能关键技术 Excel催化剂   2019.01.12 14:10* 字数 2948 阅读 41评论 0喜欢 0 编辑文章 在Excel催化剂的几大辅助录入功能中(数据验证保护.数据多级联动输入.关键词模糊智能匹配输入)中,用了一些customxmlPart技术来存储配置信息,同时在关键词模糊智能匹配输入中,用了一个VSTO开发才能满足的自定义控件技术,很值得启发,拿出来给大家作一分享. 一般来说控件都是放到窗体或任务窗格中,但Excel同样支…
Excel催化剂开源第22波-VSTO的帮助文档在哪里? Excel催化剂   2019.01.12 14:10 字数 2930 阅读 55评论 0喜欢 0 编辑文章 对于专业程序猿来说,查找文档不是个什么难事,但VSTO开发者,多数是VBA开发者转型过来的,VBA开发者一般都是比较业余(笔者也是业余的开发,很幸运得到一位专业程序猿师傅全程陪伴成长).一些看似很司空见惯的技能,可能很大部分VBA开发者还没掌握到. Visual Studio上的帮助文档 在VS2017版本上,帮助文档管理器默认不…
在插件开发过程中,随着功能越来越多,用户找寻功能入口将变得越来越困难,在Excel催化剂 ,将采用遍历所有功能的方式,让用户可以轻松使用简单的查找功能找到想要功能所在位置,查找的范围有:功能按钮的显示名称.功能说明等.   按钮功能查找关键词文本来源 这个遍历功能区按钮属性,不确定在xml功能区中能否实现,在设计器功能区,因其已经被强类型为一个类对象,用反射技术可以将这个Ribbon类下所有的控件及属性给遍历出来.详细可参考功能第78波说明.   功能区效果 同样地,自定义函数也可以用遍历的方式…
不知道是开发人员的自我要求不高还是用户的使用宽容度足够大,在众多Excel插入图片的版本中,都没有考虑到许多的可大幅度提升用户体验的细节处理. Excel催化剂虽然开发水平有限,但也在有限的能力下,尽最大的努力做到自己可以过关的出街成品. 此篇着重谈下思路性的问题,代码因为太久远之前写的,现在看回也是一坨坨的,真需要时可能重新写一轮更方便. Excel插入图片的细节追求 可能在之前的文章中,也偶尔做了一些分享,自己也不太记得分享过哪些了,这里再重新梳理下,有重复提及的部分就权当复习好了. 一.插…
在传统的VBA开发中,若是用的是普通加载项方法,是可以存储数据在xlam上的,若用的是Com加载项方法同时是Addins程序级别的项目开发的,配置文件没法保存到工作薄中,一般另外用配置文件来存放供调用. 但无论以上两种方式都会带来一点缺陷,若用户配置好自己的数据,这些配置数据只能保存到自己电脑上,无法在文件共享给其他人使用时,配置文件一并传递过去. 当然一个折衷的方式是,在Excel文件中新建一个工作表并隐藏它来实现配置数据跟着工作薄一起带走. 这种方式有一缺点是,在用户工作薄里进行数据操作,用…
在Excel催化剂推出的这一年多时间里,经常性听到一种声音,大概意思是真正会写代码的人,都不会看上Excel催化剂写出来的功能,自己造一个更舒服贴心,仿佛会一点VBA就可以天下无敌一般,也好像Excel催化剂出的所有的功能,在他们眼中都是幼儿园级别,过家家玩玩而已. 这里不对此看法置评,只用事实说话,看看会一点VBA的人,能否造出以下的超强性能保障的代码功能来. 遍历单元格性能问题 学过VBA的群体,都知道遍历单元格是一个很慢的过程,最好将其放进数组中再遍历. 为何会慢这个问题,可能就没有深入研…
答应过的全盘分享,也必承诺到底,此篇PowerBI功能分享的最后一篇,讲述如何导出数据模型的元数据,笔者定义其为模型的数据字典. 此篇对应功能实现出自:第6波-导出PowerbiDesktop模型数据字典https://www.jianshu.com/p/bc26a8dcdfce 关系型数据库有数据字典,分析型数据库更加要有数据字典,DAX建模过程中,若模型的关系复杂,引用的表过多,生成的度量值.计算列过多,单单从PowerBIDeskTop去查看模型关系非常低效. 当然最好的查看方式,在全宇宙…
在PowerBIDeskTop开启的SSAS服务,和Sqlserver所开启的一个本质的区别是,前者其端口号是随机生成的,即上一次打开获得的端口号,下一次关闭后再打开,系统分配给它新的端口号,而后者因为是服务器版的,服务器的SSAS端口号是固定的,且服务器一般都是长期打开的,不存在端口号变化引起数据连接字符串要变更的情况. 此篇对应功能实现出自:第3波-与PowerbiDesktop互通互联(Excel透视表连接PowerbiDesktop数据模型)https://www.jianshu.com…
当国外都在追求软件开源,并且在GitHub等平台上产生了大量优质的开源代码时,但在国内却在刮着一股收割小白智商税的知识付费热潮,实在可悲. 互联网的精神乃是分享,让分享带来更多人的受益. 在PowerBI领域,出现了十分优秀的DAXStudio和Tabular Editor等开源工具,影响深远.借此,Excel催化剂也决定将最核心的.也是PowerBI群体中热切盼望到功能点进行开源. 但愿从中受益的群体,不要将其视为其有,并且利用信息不对称继续进行收割智商税的延续,并且最好能够在引用时按开源的原…
前一篇的分享中,主要谈到Excel透视表连接PowerBIDeskTop的技术,在访问SSAS模型时,不止可以使用透视表的方式访问,更可以发数据模型发起DAX或MDX查询,返回一个结果表数据,较透视表的方式更为灵活. 此篇再次带出Excel向PowerBIDeskTop发出DAX查询的技术要点. 此篇对应功能实现出自:第5波-使用DAX查询从PowerbiDeskTop中获取数据源https://www.jianshu.com/p/21b2ca8fd2b8 原理性分析 和上一篇类似,同样是使用O…
此篇对应功能出自:第10波-快速排列工作表图形对象 - 简书 https://www.jianshu.com/p/eab71f2969a6 在Excel的对象模型中,列的宽度不是一般所期待的和行高一样是磅为单位,而是由当前所设定的字符大小的字符宽度为单位,致使在根据图片大小来调整列宽时,没有办法调整到位,总是有那么一点点误差. 此篇介绍的图形排列过程中,也会受此困扰,间接使用循环的方式将列宽调整好,或者用当前的ColumnWidth和Width两个值来算他们之间的比例的方式,但仍然有误差,所以E…
在金融大数据功能中,使用了TuShare的数据接口,其所有接口都采用WebAPI的方式提供,本来还在纠结着应该搬那些数据接口给用户使用,后来发现,所有数据接口都有其通用性,结合Excel灵活友好的输入方式,将其输入参数统一在Excel界面进行维护,最终实现了所有接口均可由用户自己去维护参数的方式发出查询获得所有的结果,非常完美. 此篇对应的Excel催化剂功能实现:第98波-零代码零距离轻松接触并拥有金融大数据 - 简书 https://www.jianshu.com/p/3cd41a48344…
对一般VBA开发群体来说,处理json.xml结构的数据源,在VB6的世界里,是一件非常不容易的事情,隐约记得当年自己从哪里找到了一个使用字典实现的json解释的函数,实在非常稀有. 在.Net的世界里,这些却变得如此简单,易用,本篇对普通.Net开发来说,可能是很陈旧的老知识点,希望对VBA开发者能有一点启发. 在上一篇38波的开源代码中,大量的json解释的代码,其中用到的是大名顶顶的Newtonsoft.Json类库. 因为Excel催化剂绝大部分使用场景为数据采集工作,对采集到的json…
上一篇提到图片元信息Exif的提取,当然还有一类音视频文件,也同样存储着许多宝贵的元数据,那就开源到底呗,虽然自己找寻过程也是蛮艰辛坎坷的,大家看后有收获,只求多多传播下,让前人的工作可以更有价值. 此篇对应的Excel催化剂功能实现:第83波-遍历文件夹内文件信息特别是图像.音视频等特有信息 https://www.jianshu.com/p/ad98adc64f0b 音视频元数据的提取,用到了MediaToolkit类库,较其他复杂的方案来说,这个对我这种业余开发者最友好,最后很幸运地相遇了…
Excel催化剂在文件处理方面,功能做到极致,但其实很大功劳都是引用一些开源社区的轮子库,不敢独占好处,此篇给大家分享下抓取图片的Exif信息的好用的轮子. 此篇对应的Excel催化剂功能实现:第83波-遍历文件夹内文件信息特别是图像.音视频等特有信息 https://www.jianshu.com/p/ad98adc64f0b 当然再次强调,找东西尽量用google,百度是非常低效,找出来的代码,好多也不适用,吐槽下百度最喜欢收录CSDN的文章,只是物以类聚,垃圾对垃圾,广告婊子一个.真要搜索…
Excel催化剂在图片处理方面,也是做到极致化,一般的Excel插件插入图片是原图插入或不可控制压缩比例地方式插入图片至Excel当中,但Excel催化剂的插入图片,是开发了可调节图片大小的插入方式,让图片在Excel上可以有预期的像素大小和文件大小的平衡. 在图片处理方面,完全可以借助一个非常棒的类库,实现美图秀秀那般日常的图片处理. 此篇对应的Excel催化剂功能实现:第11波-快速批量插入图片并保护纵横比不变 https://www.jianshu.com/p/9a3d9aa7ba7e E…
自定义函数的最大的作用是可以按需定制,在Excel的原生函数不提供的场景时,传统方法需要使用大量的嵌套函数去实现,实在太累,今天Excel催化剂再次送上一波绝对十分常用的函数逻辑判断类函数给大家使用! 文章出处说明 原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看. 背景介绍 在Excel的原生函数中,对逻辑判断类的函数少得可怜,一些很常用的判断文本是否包含某…
在Excel催化剂的自定义函数中,有规划求解的函数,用于在一些凑数的场景,某财务工作网友向我提出的需求,例如用于凑发票额使用. 一般开发票的场景是多次采购合在一起开具,即多个订单产生后开,同时发票一般有限额不是想开多少就开多少,而且发票的张数每月都是有限的,也不是随便可以一个零头开一张发票. 对这些凑数的场景,有个算法叫背包算法,是规范求解方面的,当然笔者也没有深入研究过,只是在我师傅的帮助下,找到了Google有一个开源库专门干这些事,性能也是棒棒的,甩开原生Excel的规范求解几个月球距离.…
现成的这些轮子,无需调用网页,直接本地离线即可生成). 当然在AI时代,少不了各种AI接口的使用场景,普通开发者只需聚焦在自己的业务场景上,这些AI底层技术,只需类似水煤电一般去BAT这些大厂那里去消费即可,作一个AI接口的消费者,将AI的能力接入到自己的应用中,这也是一个不错的创新之举. 当然Excel催化剂专注于数据分析领域,当然少不了AI的能力,将文本世界中的非结构化数据进行结构化分析,是数据分析的一个很大的应用场景. 具体实现功能 在注流的程序语言中,其实各大厂商会给予封装好现在的SDK…
在VBA上可以调用正则表达式库,从而编写正则表达式自定义函数,这个相信不少VBA开发者已经熟知,但VBA的VBScript正则表达式库毕竟是一个过时的产品,不像.Net那样是与时俱进的,所以两者实现出来的正则功能还是有区别的,.Net的正则表达式更为强大和好用,用于开发自定义函数时,若用ExcelDna来开发,就可以用上.Net的正则的强大功能. 在Excel催化剂的自定义函数开源中,已经对代码作了全公开,此处,只是作一些代码的小小讲解,希望对VBA开发者过渡过来的VSTO开发有些帮助. .Ne…
STO项目开发完毕完,最终需要分发给用户,需要Excel催化剂用的是Clickonce发布方式,但也面临到部分用户环境要求太高,设置过程太繁锁,而要求有一些简单的安装方式,用打包工具将其打包为一个EXE文件,然后分发给用户安装,这个可以带来很好的安装体验. Excel催化剂一直也同样有提供离线版打包工具打包成EXE文件一键安装的方式,不过鉴于Excel催化剂功能还在不断迭代开发中,打包的方式,暂时还不会做自动更新功能,所以不建议使用离线版安装 在Excel催化剂进行离线包打包过程中,遇到一些小小…
Excel聚光灯功能,辅助数据查看,选择区域下的高亮显示所在行列位置,此功能已被广大Excel开发者研究得十分透彻,各种版本的聚光灯流转在网络里,同样地也是一大堆的VBA代码,难找.Net的现成代码,且大部分代码两级分化的入门级和走火入魔级. Excel催化剂用了条件格式的方式实现聚光灯,唯一的小问题就是把原生的撤销功能给清除了,但其实这真是无关痛痒的不影响使用的小缺憾. 实现原理简介 通过SelectionChange事件,当用户选择不同单元格时激发事件,事件中对当前选择的单元格所在的行列区域…
通常许多的知识都是在知与不知之间,不一定非要很深奥,特别是Excel这样的应用工具层面,明明已经摆在那里,你不知道时,永远地不知道,知道了,简单学习下就已经实现出最终的功能效果. 在程序猿世界里,也是一样,很多工具类的功能,可以在代码里复用,当不知道时,自己从头造轮子,也是一件吃力不讨好麻烦事. 此篇提供一些简单的知识点,部分有代码段,部分只是操作界面即可得到,供VSTO新手们学习. 查找枚举型的完整命名空间 在录制宏中,得到的代码,虽然绝大部分是很容易改写成VB.Net或C#代码的,但有一个小…
在VSTO开发或其他COM技术开发过程中,甚至VBA也是,在和Excel交互中,难免会遇到性能瓶颈问题,COM技术的交互实在太慢,对大量数据读写等操作,耗时太长,容易卡用户界面以为是程序死机等等. 在专业程序猿开发群体,极少直接用COM的方式来访问Excel文件,都是以其他的非COM如最为流行的NPOI和EPPLUS类库的方式访问,并且是免费的可用于商业项目的. 在VSTO中调用NPOI和EPPLUS,又是怎样一翻境界呢?因Excel催化剂主要是为数据分析群体服务,其中大量的场景是面积大数据量的…
Clickonce无痛自动更新是我最喜欢使用VSTO开发并Clickonce部署的特性之一,但这个自动更新,通常会更新整个程序文件,包含所有的引用dll和一些资源文件等. 一般来说,我们更新的都是主程序,那些引用dll和资源文件,除非是发布时的版本的确更新了,才有必要更新到用户的机器上,不然动不动所有文件都一起更新,更新需要下载的文件数量也太大,等待时间也太长,最终反而变得用户体验不够完美. 资源文件的问题还比较好解决,只要不把资源文件内嵌到程序集中,然后通过手动下载或程序代码自动检测有新增或更…
Excel插件的部署问题难倒了不了的用户,特别是VSTO的部署,用ExcelDna开发的xll文件部署方便,不挑用户机器环境,是其开发Excel插件的一大优势. 其开发出来的xll文件,最终还是需要考虑用户机器Excel位数的问题,32位的Excel安装32位的xll文件,同理64位安装64位的xll. 如何判断用户机器是32位还是64位的OFFICE,并将对应位数的xll文件安放到用户机器上,这个问题之前笔者曾经花时间找过资料,最终实现了想要的功能效果. 同样的因笔者非专业程序猿,可能写出来的…
在Excel催化剂的许多功能中,都会开发窗体用于给用户更友好的交互使用,但有一个问题,困扰许久,在窗体上运行某些代码后,中途弹出下MessageBox对话框给用户做一些简单的提示或交互时,发现程序运行结束后,窗体本来是显示在前端最顶层的,却变为最小化在任务栏中. 这个问题带来非常不好的用户体验,弄到最后,都不太敢向用户发出MessageBox对话框之类的提示,或者干脆使用ShowDialog的模式显示,总之非常不爽. 最近,尝试着一个简单的处理,程序结束后,通过先Hide隐藏窗体,再重新Show…
从Excel中导出图片,是一个很常规的需求,也有一些久旧不衰的界面操作法小技巧从OpenXml文件中批量导出,在VBA开发中,也会使用Chart对象的背景图的技巧来导出.总体来说,和真正想要的效果还是有差距,特别是这样的方式导出的图片像素会低. 在VSTO开发中,有更好的方式,此篇给大家一一分享. 使用Excel催化剂的插入图片的方式,图片已经存储在PictureBox容器内,想导出时,只需在PictureBox容器上取出其Image属性,即可拿到图片,再简单的一个保存为文件的方法即可完成. 以…