<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>yycoding-记录编程点滴</title><description>.NET Developer,前微软最有价值专家(2012-2016)</description><link>https://www.yycoding.xyz/</link><pubDate>Wed, 29 Apr 2026 19:29:29 GMT</pubDate><copyright> ©2011-2026 yycoding.xyz</copyright><generator>Moonglade v12.9.1</generator><language>en-US</language><item><title>一些有关Excel的小技巧</title><link>https://www.yycoding.xyz/post/2024/3/25/some-excel-skills-for-programmer</link><description>在日常工作中的有些需求，比如数据分析和预处理，通过其它工具比如Excel点点鼠标也能解决，而且可能比写代码还快。Excel有很多强大的功能，这里只简单介绍一下我在Excel里面用到的一些小功能。这些功能包括，分列，函数，高级复制粘贴，以及数据透视表 …</description><author>xjdx2008@126.com</author><category>Excel Development</category><guid isPermaLink="false">3D298084-7B48-4DC0-B276-F04B0C8BAEF8</guid><pubDate>Sun, 24 Mar 2024 21:40:26 GMT</pubDate></item><item><title>为Excel插件增加OCR识别功能</title><link>https://www.yycoding.xyz/post/2022/4/28/add-ocr-function-for-excel-add-in</link><description>在前面开发一个社区团购微信接龙报表自动生成的Excel插件这篇文章中，介绍了如何开发一个根据买菜供货菜单结合群接龙自动生成统计报表的Excel插件。在那篇文章里，是手动输入购物清单里的商品和价格的，其主要原因是上头给的就是图片，而不是Excel文件。 本文介绍了在.NET程序中如何使用OpenCVSharp4结合PaddleOCR来实现图片里文字和表格的识别，并以WPF和Excel插件的方式将OCR功能引入到程序中，极大的减轻了手动录入的工作量。 …</description><author>xjdx2008@126.com</author><category>DotNet Framework</category><category>Excel Development</category><guid isPermaLink="false">B9884D42-9025-4C60-AE2B-EB46374D5535</guid><pubDate>Wed, 27 Apr 2022 19:54:17 GMT</pubDate></item><item><title>开发一个社区团购微信接龙报表自动生成的Excel插件</title><link>https://www.yycoding.xyz/post/2022/4/20/develop-an-excel-add-in-for-automatically-generating-community-group-buy-report-from-wechat-group-note</link><description>在上海疫情持续下，买菜成了居民生活的一大难题。为了阻止疫情传播扩散风险，政府暂停了商超的线下购物。我所在的奉贤区区政府组织了一些名为“满天星”的社区团购。我报名了本楼的社区买菜志愿者，工作就是根据居委提供了菜单，在本楼微信群里用微信接龙的方式收集大家的买菜需求，为了简化工作量，使用VSTO Excel插件的方法开发了一个报表生成工具，可以根据买菜接龙，直接生成各户居民购买物资的报表，这样极大减少了统计上报的工作量。同时也分享了做了两天社区团购自愿者的一些心得体会。 …</description><author>xjdx2008@126.com</author><category>DotNet Framework</category><category>Excel Development</category><guid isPermaLink="false">29F082AD-523A-4C47-9C35-E19CA30FB4C0</guid><pubDate>Tue, 19 Apr 2022 19:06:58 GMT</pubDate></item><item><title>浅谈Excel开发：十一 针对64位Excel的插件的开发和部署</title><link>https://www.yycoding.xyz/post/2014/1/28/compile-and-deploy-addins-for-64bit-excel</link><description>自Office 2010版本开始有了32位和64位之分，对Excel来说，32位的Excel和64位的Excel在性能上的主要区别是64位的Excel能够处理2G及2G以上的大数据集。
随着64位操作系统的安装，Office 2010及以上版本的普及以及计算机的内存容量越来越高，使用64位Excel的用户越来越多，所以让插件支持64位Excel能够赢得一部分用户。前面十篇文章中所讲解的技术适用于不同版本和不同位数的Excel，但是由于32位的COM组件不支持64位的Excel，所以在针对不同位数的Excel的编译和部署的时候，有些地方可能需要注意和有所不同。
64位版本的Office只能安装在64位的操作系统之上，32位的Office采用Windows-32-on-Windows-64 (WOW64) 技术可以安装在64位操作系统上，这也是32位Office在64位操作系统上的默认安装 …</description><author>xjdx2008@126.com</author><category>Excel Development</category><guid isPermaLink="false">33CC854C-7789-49F6-9B93-978C232B8445</guid><pubDate>Tue, 28 Jan 2014 04:05:00 GMT</pubDate></item><item><title>浅谈Excel开发：十 Excel 开发中与线程相关的若干问题</title><link>https://www.yycoding.xyz/post/2014/1/5/some-thread-releated-problems-and-solutions-in-excel-development</link><description>采用VSTO或者Shared Add-in等技术开发Excel插件，其实是在与Excel提供的API在打交道，Excel本身的组件大多数都是COM组件，也就是说通过Excel PIA来与COM进行交互。这其中会存在一些问题，这些问题如果处理不好，通常会导致在运行的时候会抛出难以调试的COM异常，从而导致我们开发出的Excel插件的不稳定。
    和普通的WinForm程序一样，Excel也是一种STA(Single Thread Apartment)线程的应用程序，Excel插件是寄宿在Excel中运行的，这也就意味着插件也是一种STA线程的应用程序。插件在操作Excel的时候，如果是在Excel的主线程中，可以直接获取Excel对象进行操作，比如写入单元格值，对单元格进行格式化等操作。但是通常，我们会在多线程或者后台工作线程中去处理一系列复杂的数据或者逻辑，待处理完成获得结果 …</description><author>xjdx2008@126.com</author><category>Excel Development</category><guid isPermaLink="false">87A0FB65-A0D4-4AD5-9B28-ADE61C59155F</guid><pubDate>Sun, 05 Jan 2014 05:22:00 GMT</pubDate></item><item><title>浅谈Excel开发：九 Excel 开发中遇到的常见问题及解决方法</title><link>https://www.yycoding.xyz/post/2013/12/15/frequently-encountered-problems-and-solutions-in-excel-development</link><description>Excel开发过程中有时候会遇到各种奇怪的问题，下面就列出一些本人在开发中遇到的一些比较典型的问题，并给出了解决方法，希望对大家有所帮助。
一 插件调试不了以及错误导致崩溃的问题

在开发机器上，有时可能会装有多个版本的.NET运行时，有时候也可能装有多个版本的Visual Studio，本人的开发机器上就安装了3个版本的Visual Studio，在最新的Visual Studio 2013出来之后，就迫不及待的把工程文件迁移到2013上来了，但是在设置了启动程序之后，调试的时候，断点根本不能命中，也调试不进去。即使使用Attached to process方式也不行。

该问题是由于在安装有多个.NET版本的机器上，由于某些原因，会导致Excel不知道为Com Add-in加载哪个版本的Framework导致的。注：这里仅针对是用.NET技术开发Shared Add-in插件 …</description><author>xjdx2008@126.com</author><category>Excel Development</category><guid isPermaLink="false">9A7046D5-4AE2-4872-9D26-6A187B63CFA1</guid><pubDate>Sat, 14 Dec 2013 23:37:00 GMT</pubDate></item><item><title>浅谈Excel开发：八 Excel 项目的安装部署</title><link>https://www.yycoding.xyz/post/2013/12/9/excel-addin-deployment-introduction</link><description>前面几篇文章讲解了Excel开发的几个比较主要的也是比较重要的方面，比如菜单系统，Excel对象模型，自定义函数，RTD函数，异步自定义函数，用户自定义任务面板等，在实际开发中我们还会遇到各种&amp;ldquo;千奇百怪&amp;rdquo;的问题，以及开发中的一些注意事项和技巧等，后面有空我会写文介绍。当我们的Excel外接应用程序开发好了之后，需要给用户使用，这就涉及到了应用程序的安装与部署，本文就简要介绍下Excel项目的安装和部署。
    和一般的.NET 中的Windows Form程序不同，Excel开发通常是一种插件式的开发机制，它需要借宿在Excel上，并通过调用Excel的API来实现特定的业务逻辑。宿主Excel在运行的时候，会根据当前用户以及Excel版本信息，读取注册表特定位置，以查找在本机当前用户下面注册的插件信息，然后逐个加载。这里面就涉及到了和安装部署相关的一些 …</description><author>xjdx2008@126.com</author><category>Excel Development</category><guid isPermaLink="false">B64E77F0-BA4C-4CB0-B8E0-6B718B12674F</guid><pubDate>Sun, 08 Dec 2013 17:39:00 GMT</pubDate></item><item><title>浅谈Excel开发：七 Excel 自定义任务窗体</title><link>https://www.yycoding.xyz/post/2013/10/18/excel-custome-task-panel-introduction</link><description>前面花了三篇文章讲解了Excel中的UDF函数，RTD函数和异步UDF函数，这些都是Excel开发中的重中之重。本文现在开始接着第二篇文章的菜单系统开始讲解Excel中可供开发的界面元素，本文要讲解的是Excel中的自定义任务面板(Custome Task Panel，CTP) 。
    自定义任务面板在Office 2003中就引入了，相信大家都用过Word中的字典和插入剪贴画功能，左侧的边栏就是自定义面板。如下图：

    但是Office 2003的自定义面板并没有给我们开发人员提供开发接口，也就是说，我们不能创建我们的自定义的任务面板。
    从Office 2007版本开始，Office的一个显著变化是添加了更多的快速预览以及自定义面板，这在Office的各个产品中均有体现。如下图：

    更重要的是，从Office 2007开始，CTP接口开放使得 …</description><author>xjdx2008@126.com</author><category>Excel Development</category><guid isPermaLink="false">BD319A1D-59E6-48F6-B704-2918D9C1BB82</guid><pubDate>Thu, 17 Oct 2013 18:00:00 GMT</pubDate></item><item><title>浅谈Excel开发：六 Excel 异步自定义函数</title><link>https://www.yycoding.xyz/post/2013/9/29/introduce-excel-async-user-define-function</link><description>上文介绍了Excel中的自定义函数(UDF )，它极大地扩展了Excel插件的功能，使得我们可以将业务逻辑以Excel函数的形式表示，并可以根据这些细粒度的自定义函数，构建各种复杂的分析报表。
    普通的UDF自定义函数的基本执行逻辑是，Excel接受用户输入的函数表达式，然后通过UDF函数的处理逻辑进行处理，在处理过程中，Excel 的UI界面会一直等待函数体执行完成之后更新单元格数据。和大多数同步应用一样，同步的UDF函数会阻塞Excel UI线程，并且不方便动态扩展计算能力，在处理逻辑比较复杂、进行耗时的计算逻辑的时候，会造成较差的用户体验。所以我们需要开发异步的UDF函数。
一 问题的提出

    通常，当用户在Excel中输入自定义函数的时候，我们希望实现以下表现：

开启另外一根线程或者在线程池中处理函数计算逻辑(不同于Excel UI线程)。
同时 …</description><author>xjdx2008@126.com</author><category>Excel Development</category><guid isPermaLink="false">F13B44E5-1D17-41F3-B29A-2FF1FB5772C9</guid><pubDate>Sun, 29 Sep 2013 06:59:00 GMT</pubDate></item><item><title>浅谈Excel开发：五 Excel RTD函数</title><link>https://www.yycoding.xyz/post/2013/8/29/excel-realtime-data-function-introduce</link><description>上文介绍了Excel中的UDF函数，本文介绍一下同样重要的RTD函数。从Excel 2002开始，Excel引入了一种新的查看和更新实时数据的机制，即real-time data简称RTD函数，他是一种Push-Pull的方式，及在需要更新数据的时候，RTD给Excel Push一个消息说要更新数据，Excel在收到消息后主动拉取Pull新的数据。RTD函数最开始的用途在于更新实时变化的数据，比如股票实时行情数据，实时天气预报数据，球队比赛得分数据等等。
    在过去，要实现这些功能，需要依赖一些其他诸如Dynamic Data Exchange(DDE)技术来访问实时数据资源，但DDE和标准的Excel函数样式有很大的不同，并且并不是为Excel获取实时数据而设计的，缺乏健壮性，并且效率不高，RTD的引入解决了这些问题。
    本文首先介绍RTD的一些常用的使用场景， …</description><author>xjdx2008@126.com</author><category>Excel Development</category><guid isPermaLink="false">34B9860B-E222-4ACD-A30F-7477E304F7CC</guid><pubDate>Wed, 28 Aug 2013 17:00:00 GMT</pubDate></item><item><title>浅谈Excel开发：四 Excel 自定义函数</title><link>https://www.yycoding.xyz/post/2013/8/19/excel-user-define-function-introduce</link><description>我们知道，Excel中有很多内置的函数，比如求和，求平均，字符串操作函数，金融函数等等。在有些时候，结合业务要求，这些函数可能不能满足我们的需求，比如我想要一个函数能够从WebService上获取某只股票的最新价；我想要一个函数能够获取当前的天气情况，这些需求我们可以通过编写Excel自定义函数(User Define Function ,UDF )来实现，这样，在Excel中直接调用我们的自定义函数即可满足特定的业务需求，一般地，因为这种自定义函数的粒度相对较小，所以我们可以根据业务需求编写很多基础的自定义函数，然后以这些自定义函数为基础，编写各种复杂的分析报表。
    编写UDF的方式有很多种，比如直接在VBA种编写自定义函数；如果您熟悉C++，可以将自定义函数编写到XLL中，不熟悉也可以使用ExcelDNA这个开源的库使用.NET技术也可以将您的代码编译为XLL；如果熟悉 …</description><author>xjdx2008@126.com</author><category>Excel Development</category><guid isPermaLink="false">592147CB-9C9B-440C-9A35-1DF05F313020</guid><pubDate>Sun, 18 Aug 2013 17:00:00 GMT</pubDate></item><item><title>浅谈Excel开发：三 Excel 对象模型</title><link>https://www.yycoding.xyz/post/2013/8/9/excel-object-model</link><description>前一篇文章介绍了Excel中的菜单系统，在创建完菜单和工具栏之后，就要着手进行功能的开发了。不论您采用何种方式来开发Excel应用程序，了解Excel对象模型尤其重要，这些对象是您与Excel进行交互的基石。据不完全统计，Excel的对象模型中有270多个对象及超过5000多个属性和方法。通过这些对象及方法，您可以充分利用Excel来定制化您的插件。
Excel的所有对象，事件，方法和属性在这里不可能全部介绍完。本文简要介绍一下Excel的整体文档对象模型，以及一些比较重要的，平常开发中需要频繁接触到的对象，属性，事件及方法，如Application，Range对象等，使您对Excel的整个结构有一个简单的了解。后面在编程中遇到问题了，您可以快速定位知道需要设置或者调用哪个对象及其方法，然后根据关键字到Google或者MSDN上方便查找。本文大部分内容参照MSDN上的这篇文章 …</description><author>xjdx2008@126.com</author><category>Excel Development</category><guid isPermaLink="false">1B820108-62DA-4FFF-A1EE-1477023398A5</guid><pubDate>Thu, 08 Aug 2013 17:00:00 GMT</pubDate></item><item><title>浅谈Excel开发：二 Excel 菜单系统</title><link>https://www.yycoding.xyz/post/2013/8/1/excel-menu-system-introduction</link><description>在开始Excel开发之前,需要把架子搭起来。最直接的那就是Excel里面的菜单了，他向用户直观的展现了我们的插件具有哪些功能。菜单出来之后我们就可以实现里面的事件和功能了。Excel菜单有两种形式，一种是Excel 2003及之前的传统菜单样式，一种是Excel 2007及之后的Ribbon菜单。本文首先讲解Excel 2007中菜单的创建，包括使用Visual Studio可视化设计菜单，菜单的RibbonXml配置，然后讲解如何在Excel 2003中创建自定义菜单。最后演示如何使用SharedAddin技术将两者结合起来，即在2003版本中显示原始的菜单样式，在以2003上版本中动态加载Ribbon菜单，从而达到版本的兼容。
一 Excel 的Ribbon菜单及Ribbon Xml文件

要演示菜单的创建，我们首先创建一个VSTO程序，如图在VS中创建一个Excel外接程序: …</description><author>xjdx2008@126.com</author><category>Excel Development</category><guid isPermaLink="false">544965D9-9279-41A3-BE14-32AF98303DF0</guid><pubDate>Wed, 31 Jul 2013 17:00:00 GMT</pubDate></item><item><title>浅谈Excel开发：一 Excel 开发概述</title><link>https://www.yycoding.xyz/post/2013/7/22/excel-develpment-introduction</link><description>做Office相关的开发工作快一年多了，在这一年多里，在插件的开发中遇到了各种各样的问题和困难，还好同事们都很厉害，在和他们的交流讨论中学到了很多的知识。目前Office相关的开发资料是比较少的，最最开始的时候，我看的是一本英文资料，然后再就是MSDN上面去提问了。所以我想写一点东西，让大家也少走一些弯路。
    这篇文章就简要介绍一下Office开发的一些相关的知识，使大家对这个有一个大体的了解。
    首先来看一看Office 的开发方式。
一 Office开发方式

1 VBA (Visual Basic Application)
    VBA是一种Visual Basic的宏语言，它应该是最早的Office提供定制化的一种解决方案，在1994年发行的Excel 5.0版本中，就具备了VBA的宏功能。从名字上似乎可以看出他是VB的一个子集，和Visual …</description><author>xjdx2008@126.com</author><category>Excel Development</category><guid isPermaLink="false">636DB6CF-9F63-4AD5-8546-7DAC40FDAA92</guid><pubDate>Mon, 22 Jul 2013 02:12:00 GMT</pubDate></item><item><title>一次Debug经历</title><link>https://www.yycoding.xyz/post/2012/12/23/one-debug-experience</link><description>    周五天晚些时候，部门发布了一个&amp;ldquo;世界末日&amp;rdquo;版本的产品，我们小组参与了其中Office插件的开发工作。这算是一个比较重要的节点。产品发布后，在同事机器上安装部署之后，Office插件发现了一个比较严重的Bug，就是用户在打开一个已经存在的Excel文件的时候，我们的插件不能正常加载，因为之前开发调试的时候，都是直接选择Excel软件为启动项的，这样，每一次都是直接打开的Excel程序，而不是一个文件。在检查这个Bug的时候又发现了另外一个比较严重的Bug，就是Excel关闭之后，任务管理器中的Excel.exe这个进程没有关闭，这个Bug在开发阶段我注意到了，以为是开发阶段调试的时候才有的，所以没有太在意。于是乎跟领导们反应之后，领导过来说这个Bug能不能修复，最好能修复，不可以的话，叫测试那边注意一点儿就可以。我说可以，但是需要一点儿时间。我和另外一个同事开 …</description><author>xjdx2008@126.com</author><category>Excel Development</category><guid isPermaLink="false">937A12CC-D9DF-4686-AB00-42BC3CFBB2E5</guid><pubDate>Sun, 23 Dec 2012 04:08:00 GMT</pubDate></item></channel></rss>