首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Excel催化剂开源第14波-VSTO开发之单元格区域转DataTable

在Excel开发过程中,大部分时候是和Range单元格区域打交道,在VBA开发中,大家都知道的一点是,不能动不动就去遍历所有单元格,那性能是非常糟糕的,很多时候,是需要把整个单元格区域装入数组中再作处理的...在VSTO开发中,难不成还要用VBA这套老掉牙的东西来做吗?VBA的二维数组在.Net的世界中,真的一无是处,太多比它好用的东西存在,其中笔者最喜欢用的是DataTable这样的结构化的数据结构。...DataTable结构,DataTable的数据列类型,有时保留Excel的数据类型方便些,有时全部变为String类型方便些。...} return dataTable; } 结语 经过简单几步实现了Excel单元格区域加载至DataTable内,然后才是真正的VSTO...最后,数据在程序内,最终需要返回给用户界面,即Excel单元格区域,又是怎样实现最为合理呢,请继续关注下篇讲解。

1.6K20

个人永久性免费-Excel催化剂功能第47波-VBA开发者喜爱的加密函数类

,今天抛砖引玉,拿几个加密类函数来讲说一下VSTO较VBA开发的一些优势所在。...一般像我这种水平的人,只需要不断地百度或google,就可以拿到现成的东西直接复用,VBA毕竟是业务开发者使用的编程语言,同时又是一个官方停止更新语言,仍然使用VBA做一些复杂的需求,有点吃力不讨好。...在VBA代码中调用加解密函数方法 说到重点,VBA开发者可能更多场景还要回到自己在VBA代码中想要调用其他语言开发好的函数,例如此篇的自定义函数。...44波-可见区域复制粘贴不覆盖隐藏内容 第45波-逻辑判断函数增强 第46波-区域集合函数,超乎所求所想 关于Excel催化剂 Excel催化剂先是一微信公众号的名称,后来顺其名称,正式推出了Excel...,且需可连接外网的方式实现自动更新机制,若下载安装过程中有任何疑问或需要离线版安装等,尽量不单独私聊询问,加QQ群可高效解决(群内已汇集了VSTO开发、Powerbi技术、Sqlserver商业智能等方面的国内顶尖大牛人物

3.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Excel催化剂开源第51波-Excel催化剂遍历单元格操作性能保障

    这里不对此看法置评,只用事实说话,看看会一点VBA的人,能否造出以下的超强性能保障的代码功能来。 遍历单元格性能问题 学过VBA的群体,都知道遍历单元格是一个很慢的过程,最好将其放进数组中再遍历。...为何会慢这个问题,可能就没有深入研究过,而笔者用自己不专业的语言表达下原因,是因为VBA或VSTO等代码与Excel交互是用的是COM的通信,这个COM通信非常臃肿,遍历过程中,不断地来回通信,产生了十分低效的性能...但在VSTO的.Net世界中,这个需求非常刚需,特别是服务器级别的应用,不可能再用COM接口来通信应付高并发性需求。...直接上代码 此段代码是第75波核心代码,用于将查找到的结果存储为新的表格内容,最终返回给用户一个结构化的数据源。...的世界中,可以调用一切专业程序员所写给我们的轮子库,相对VBA的开发来说,有天然的优势,有追求的群体,不妨再走一步,走出VBA的舒适区,拥抱VSTO的开发,会是一片更广阔的天空。

    90720

    VSTO之外的另一开发利器Excel-DNA介绍,VSTO与Excel-DNA优缺点分析

    前面一种介绍了许多VSTO开发的插件一些功能和零散提到VSTO开发的一些好处,今天在这里来个180大翻脸,开始谈下VSTO开发插件的一些不足。...面向对象编程,代码管理更方便,其实本人也不太有面向对象的编程思想,不能编出给其他人用的类,但却可以源源不断地用别人封装好的类库,属于编程群体中的使用者,非制造者。 2....可以对自定义函数进行用户输入提示功能,效果和原生的工作表函数的提示功能接近,这是VSTO和VBA开发所没法做到的。 1.7....可以利用作者实现的异步功能,开发数组函数可以不需用户Ctrl+Shift+Enter麻烦输入,直接像普通函数一样输入,但最终可以返回多个值,同时在运算效率和性能得到显著提升。 1.8....开发非自定义函数以外的功能,如功能区开发等,没有VSTO来得方便 内容预告 今晚文字写得有点多,没时间录视频,明晚录个视频给大家感受下Excel-DNA的魅力,敬请期待。

    5K41

    Office 365开发概述及生态环境介绍(一)

    Office 2003 这是一个非常重要的版本,它代表中Office产品技术的一个巅峰时代——这个版本的Office功能非常强大,可以说是无所不包。...首先,它当然继续支持VBA,但却规定所有包含代码的文件,与不包含代码的文件,从文件格式上就明确有所区分。...由于VBA的巨大成功,甚至一些非微软产品(例如AutoCAD)中也支持VBA。 虽然理论上说VBA可以做很多事情,但它主要擅长的是对应用程序内部操作的自动化。...你现在能找到的任何一个Office版本,你打开某个应用(例如Excel)后,按下ALT+F11键即可进入VBA的编辑器界面。 ?...此为后话,且按住不表。 必须提出的是,微软对于VBA和VSTO的支持将继续保留,它们有自己的优势,尤其是对于Office 应用程序自有功能的自动化、快速开发、在本地使用的场景。

    3K20

    Excel催化剂开源第22波-VSTO的帮助文档在哪里?

    对于专业程序猿来说,查找文档不是个什么难事,但VSTO开发者,多数是VBA开发者转型过来的,VBA开发者一般都是比较业余(笔者也是业余的开发,很幸运得到一位专业程序猿师傅全程陪伴成长)。...里整理的许多VSTO方面的文档,比市面上任何一个博客、书籍都要丰富得多。...VSTO开发入门 打开网页浏览 网页版变成机器翻译了 Excel对象帮助文档 对一般VBA开发者来说,一点都不陌生,最好的帮助文档就是在录制宏中和VBE的F1中。...离线版Excel开发帮助文档 结语 进入VSTO开发的领域,不能单靠一些图书的方式获取帮助,更多地应该是从官方文档中获取信息,再辅助用搜索引擎。...用上官方的帮助文档,可以瞬间发现,其实VSTO的学习资源已经非常丰富,并不像我们印象中那样只用一点点的网络资源和图书资源。

    1.2K30

    Excel催化剂开源第15波-VSTO开发之DataTable数据导出至单元格区域

    上篇提到如何从Excel界面上拿到用户的数据,另外反方向的怎样输出给用户数据,也是关键之处。 VSTO最大的优势是,这双向的过程中,全程有用户的交互操作。...VSTO程序在用户全程数据链条中,都无缝地参与了,只在用户无法解决的复杂数据转换时,才使用二次开发进行处理,处理完,立即可进行下游的其他操作,用户体验绝对是一流。...言归正传,如何DataTable数据导出至单元格区域 在传统的VBA方法中,有ADO的某个方法CopyToRange,直接将DataRecordset的数据输出至单元格区域。...许多VSTO用户还在抱怨着ADO.Net没有相应的方法而郁闷万方,看完此篇内容,会彻底改观,并且可以彻底放弃ADO这样的落后的技术,拥抱ADO.Net这样与时俱进的专业程序猿使用的技术。...在VSTO中,提供了ListObject的数据对象,区别于传统VBA中能够使用的ListObject。

    2.4K30

    Excel催化剂开源第7波-VSTO开发中Ribbon动态加载菜单

    在VS开发环境中,特别是VSTO的开发,微软已经现成地给开发者准备了设计器模式的功能区开发,相对传统的VBA、ExcelDna和其他方式的COM加载项开发来说,不需要手写xml功能区,直接类似拖拉窗体控件一样...} catch (Exception) { } } 场景二、动态加载菜单项目数量 某些菜单下的内容不固定...,根据用户的配置文件信息的条目数据多寡来动态加载,例如Excel催化剂中大量使用的动态菜单效果 在设计器中无需拖拉控件进来,代码动态生成 需要使用动态菜单功能,需要在menu控制中,在设计器属性中打开...名称而非Label 结语 使用VSTO开发,可以有现成的功能区设计器模式可利用,无需手工书写xml功能区,作大量的回调函数处理等,并且在动态显示、隐藏控件、动态添加菜单子项等操作都非常灵活方便,不失为VSTO...开发的一大优势,虽然VSTO也有其弱点,但综合它带来的优势,笔者更喜欢使用VSTO来做开发。

    1.5K20

    VSTO开发Excel插件自动更新实现效果演示

    平常我们开发一些插件过程中,肯定不可能一口气把所有功能开发完,或者开发好之后,给到用户手里使用过程中,不出现任何错误问题。...例如传统VBA是以文档的形式和用户做传输,用户对文件的来源和文件内的代码的安全性很难把控,就算相信某个开发者,但也很难保障到最终拿到手里的文件是出自此开发者的,传输过程中没有被恶意修改过的等等。 ?...现VSTO的程序为何能做到不需用户干预,直接就自动更新了呢,如果出现像传统VBA开发那样,更新的代码被篡改了,然后用户不知情下代码已经植入了用户的机器,这样的情况岂不是很可怕。...所以VSTO在做自动更新机制的过程中,有了两道验证保护, 1、验证程序是开发者开发的,用证书的方式来保证,证书是一一对应的,开发者给用户电脑分发证书,用户电脑安装了证书,就证明用户是信任开发者所开发的一切程序...同样的发VSTO的方案中,用户也需要手动配置好信任开发者存放dll等代码文件的位置,如果开发者不按要求放到某个位置,用户机器可以拒绝对其信任。

    2.4K20

    Excel催化剂开源第19波-一些虽简单但不知道时还是很难受的知识点

    在程序猿世界里,也是一样,很多工具类的功能,可以在代码里复用,当不知道时,自己从头造轮子,也是一件吃力不讨好麻烦事。...查找枚举型的完整命名空间 在录制宏中,得到的代码,虽然绝大部分是很容易改写成VB.Net或C#代码的,但有一个小问题是当录制出来的代码有枚举类型时,在VBA里的枚举是不带命名空间的,在VSTO里,是需要补全此命名空间的...以下为VBA代码,通过录制宏即可得到,将单元格内容居中显示。...用户的话,可以供用户修改,程序级的就是不修改的,固定保存到程序中的,比硬代码写在代码里维护要方便。...对于我们OFFICE使用的颜色,就是Ole颜色,对应于VBA接口的Color属性值 一般来说在VSTO的.Net环境下,引用的颜色是标准.Net颜色,需要和OFFICE的颜色进行转换,转换的代码也异常简单

    81330

    攻击者使用 VSTO 接替宏进行武器化攻击

    微软的 Visual Studio IDE 中提供了一个软件开发工具集 VSTO,通过 VSTO 可以支持在 .NET 中开发 Office 加载项,还允许创建能够执行这些加载项的 Office 文档文件...本地 VSTO 本地的 VSTO 会将 .NET 编译的 .DLL 加载项及其依赖项与为执行它而创建的 Office 文档存放在一起,例如 ISO 文件中。...全部文件 一旦受害者打开恶意文档,就会提示用户安装加载项,与之前使用 VBA 宏时引诱用户启用内容十分相似。...例如,恶意 Word 文档从远程获取 VSTO 加载项: 远程 VSTO 下载的 DLL 加载项中,嵌入了下载加密的 ZIP 文件的代码。...结论 尽管 VSTO 在实际中并不常见,但由于其攻击能力的完整,研究人员认为未来会有更多的攻击者开始采用这种攻击向量,尤其是国家级攻击组织。

    88930

    『Excel进化岛精华曝光』 VSTO插件开发的撤销功能实现

    不破坏原数据,其实最好的方案是用自定义函数实现,如果需要用按钮功能,只需要将生成的新数据写入到新工作表或新区域即可。Excel催化剂大量的功能遵循此原则来处理。...当然很多用户很想要,在做定制开发时,客户要的都是合理的,给过钱买服务,要做就做呗。 翻阅了一下互联网的分享,深入分享的并不多,可能时代变了,大家都包装成付费知识来私域分享了。...https://learn.microsoft.com/zh-cn/visualstudio/vsto/walkthrough-calling-code-in-a-vsto-add-in-from-vba...https://t.zsxq.com/0bLAZMgc0 上面的VSTO实现撤销功能,本质上是VSTO开放接口给外部VBA语言来调用,但如果使用ExcelDNA框架开发,并不需要这么麻烦,项目中还要带一个...例如笔者在Excel催化剂插件中实现的一些鼠标右键功能,也是一个套路,这部分的功能,其实是在【自定义函数.xll】文件里开发完成的。

    77720

    Excel催化剂开源第41波-网络采集类库及工具分享

    在VBA开发网抓程序中,会用到xmlhttp/winHttp.winHttprequest.5.1等组件,当时笔者也是这样进入了网抓领域的,这些都是非常过时的东西,在.Net的开发中,有大量的更好用的轮子使用...,在Excel催化剂开发过程中,也会用到,在此向大家简单分享,希望对VBA转VSTO开发群体有所帮助。...的更抽象的封装,几个方法即可返回想要的结果。...,微软造得不够易用,就有其他开发者在其基础上做封装,做更简单的轮子出来,所以这也是VBA转VSTO的一大优势,可以用上专业程序员世界的大量轮子,而VBA几乎没有什么轮子可用,只有零散的一些小代码片段。...,使用xml查询语言xpath去结构化地访问网页内容,对于非WebAPI返回的json、xml数据结构的网页特别好用。

    1.1K30

    【坐等WPS兼容时刻到来】开源分享完整ExcelDNA框架的Excel插件项目

    一、Ribbon.xml已经独立成单文件,可追加内容即可满足新需求 原ExcelDNA项目的功能区xml文件在其dna后缀文件中,已将其独立出单文件,更方便使用VisualStudio的智能提示编写功能区代码...使用xml来构建功能区,初始学习成本略高,但上手后会爱上它的,比VSTO设计器的功能更好用,功能更强大,并且更易批量性地追加内容和管理内容。...三、完整的任务窗格的调用代码供学习参考 在VBA里,可是用不了任务窗格,而任务窗格又是非常棒的交互体验,具体可参考笔者开发的几大插件,大量使用到任务窗格。...四、自定义函数示例 ExcelDNA最大的魅力,莫过于用于开发自定义函数,简单易用,并且用户体验也是最棒的,智能提示效果是VBA或VSTO开发所不能及的。...也希望笔者所做的这些小小努力,能够为大家带来更方便的上手体验,消除阻碍。 本demo项目,已在码云上开源,任何人都可访问并下载后,快速面向功能开发。

    2.3K10

    Script Lab 06:事件处理,Excel 基础操作(4)

    开发者可以靠着各种事件的的触发来设计可以自动执行的 Office 应用,比如可以在工作表中的选择时发生的事件,就是一个常见的应用场景。...如果曾经使用 VBA 的事件,会麻烦一些,而 VSTO 则要方便得多,通过重载运算符来操作。...在 OfficeJS 中,事件操作介于两者之间,比 VSTO 要麻烦些,必须没有重载机制,但是比 VBA 又要简单些。我们先来看看传统的 Office 事件声明方式: ?...工作表事件 【VBA】 在工作表中的选择时发生的事件,也是事件驱动编程最常用到的一种。...加上前几节内容讲述了代码框架、Office JavaScript API 助手、Excel Api (数据操作),理论上您己经可以像 VBA 一样,创作出大部分的流程应用了。

    1.2K10

    『JSA宏神助攻之二』使用外部程序VSTO插件执行JSA宏

    以下是历史内容: 在WPS的个人版上,默认只有JSA宏,没有VBA宏,虽说在VSTO/ExcelDNA项目里或者外部程序如C#/python等可以使用COM通信来调用WPS的COM开放的接口。...但是WPS的COM接口,表面是和Excel通用,但也有许多bug存在。暂时没有测试到是否存在JSA宏正常而VBA宏不正常的情况。...但事实是,在JSA宏里有的一些接口,WPS没有开放同步到VBA接口上。...在VSTO里可以调出webshape网页控件等,非常广阔的应用场景。 现如今,还真可以了。稍有点曲折,但总算是可以做到在windows环境下实现调用JSA宏的愿景。...,xlsm文件打开后,里面的JSA宏是程序级别的,可以用到其他工作薄中。

    12410

    『JSA神助攻之二』使用外部程序VSTO插件执行JSA宏

    以下是历史内容: 在WPS的个人版上,默认只有JSA宏,没有VBA宏,虽说在VSTO/ExcelDNA项目里或者外部程序如C#/python等可以使用COM通信来调用WPS的COM开放的接口。...但是WPS的COM接口,表面是和Excel通用,但也有许多bug存在。暂时没有测试到是否存在JSA宏正常而VBA宏不正常的情况。...但事实是,在JSA宏里有的一些接口,WPS没有开放同步到VBA接口上。...在VSTO里可以调出webshape网页控件等,非常广阔的应用场景。 现如今,还真可以了。稍有点曲折,但总算是可以做到在windows环境下实现调用JSA宏的愿景。...,xlsm文件打开后,里面的JSA宏是程序级别的,可以用到其他工作薄中。

    17310

    个人永久性免费-Excel催化剂功能第39波-DotNet版的正则处理函数

    为何要使用正则表达式 正则表达式在字符串处理中,是一大利器,从复杂的杂乱的字符串内容中,提取出有用的符合要求的信息,仅使用Excel自带的文本处理函数如LEFT/RIGHT/MID/SUBSTITUTE...VBA是微软已经停止更新的语言,在正则表达式的功能上支持有限(但也基本够用)。在DotNet版的正则表达式中,支持的功能更多。如支持使用Split分割、零宽度先行断言、零宽度后发断言、可命名组等。...input=输入 pattern=匹配规则 matchNum=确定第几个匹配返回值,索引号从0开始,第1个匹配,传入0 groupNum=确定第几组匹配,索引号从1开始,0为返回上层的match内容。...i)[a-z]中的(?i)是忽略大小写的意思,且为全局性忽略。 而pattern=abc(?i)[a-z]时,为局部忽略大小写,前面的abc是不忽略大小写的匹配。 ?...,且需可连接外网的方式实现自动更新机制,若下载安装过程中有任何疑问或需要离线版安装等,尽量不单独私聊询问,加QQ群可高效解决(群内已汇集了VSTO开发、Powerbi技术、Sqlserver商业智能等方面的国内顶尖大牛人物

    1.1K30

    Excel催化剂开源第30波-在Excel上尽情地使用LINQ

    对于笔者这样的数据分析工作者来说,对数据库有较深的掌握,当然少不了对SQL查询的深度使用,如果在编程的世界中,可以复用这样的能力,真的是一件多么令人高兴的事情。...在.Net的世界中,恰恰提供了这样的能力,用LINQ,仿佛回到了写SQL语句查询的环境中,对编辑中的使用的各种对象集合,在排序、筛选、去重等SQL语句常用的功能上,在LINQ的帮助下,一样可以对代码中的集合对象进行这些操作...所以在VBA的世界中,对某对象进行排序、筛选、去重等操作,在VSTO的世界中,使用LINQ来操作,将变得十分简单。...t.Row - srcRangefirstRow).ToArray(); return visibleRowIndexs; } 获取数据区域单元格,过滤隐藏、错误、空值等...结语 LINQ真的是.Net语言一个非常好用的技术,可以让代码写起来无比流畅,非常值得学习掌握,当然VBA转到VSTO开发的群体,也优先学习这个技术,让自己的代码写出来,更加.Net化,而不是简单的只是语法转换

    1.8K20

    Excel催化剂开源第23波-VSTO开发辅助录入功能关键技术

    在Excel催化剂的几大辅助录入功能中(数据验证保护、数据多级联动输入、关键词模糊智能匹配输入)中,用了一些customxmlPart技术来存储配置信息,同时在关键词模糊智能匹配输入中,用了一个VSTO...,当然,严格来说,在VBA环境下也可以完成这些工作。...在VSTO框架下,有一革命性的突破是,可以放我们的自定义控件,这个具体和VBA的自定义Active控件有什么不一样,就不太知道,但起码VSTO放自定义控件,开发成本极低。...输入过程中动态控制下方DataGridView的查找结果,用户可以按方向箭下上在结果中选择对应的条目,再按Enter或Tab键确定内容录入。...FormFastInput.CurrentSelectCell = Target; int fastInputID = GetFastInputID(Target);//找不到有交集时返回

    1.3K10
    领券