ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 30882|回复: 35

给Excel开外挂:推荐一个开源的项目Excel DNA,可以自己用C#给Excel写函数了

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-12-2 20:07 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 liucqa 于 2012-12-2 20:54 编辑

下载网址
http://exceldna.codeplex.com/releases/view/66405

解压缩下载的文件
2.JPG
双击Exceldna.xll,Excel自动安装插件(加载宏性质)

新建工作簿,在工作表里面输入公式
=AddThem(1,2)
看结果。


函数都在ExcelDna.dna文件中定义
1.JPG

例子图片
4.JPG
3.JPG

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-2 20:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
文档说明
Excel-DNA - Step-by-step C# add-in.rar (419.03 KB, 下载次数: 974)

里面有使用C#建立打包文件的例子

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-2 20:16 | 显示全部楼层
捕获.JPG

强大之处在于,可以使用C#语法来建立自己的函数

捕获.JPG

TA的精华主题

TA的得分主题

发表于 2012-12-2 20:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我函数都不会,老师的这个是不是能用汉字写公式呢

点评

老外的工具,他们可不会汉语  发表于 2012-12-2 20:18

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-2 20:49 | 显示全部楼层
本帖最后由 liucqa 于 2012-12-2 21:02 编辑

捕获.JPG

捕获.JPG

SHA()函数功能:产生sha512位的哈希值

VBA中的调用方法:
MsgBox Application.ExecuteExcel4Macro("SHA(""my string"")")
或者
MsgBox Application.Run("SHA", "my string")



ExcelDna.dna文件中的代码
  1. <DnaLibrary Language="CS">
  2.     <![CDATA[
  3.         using System;
  4.         using System.Data;
  5.         using System.Configuration;
  6.         using System.Security.Cryptography;
  7.         using System.Text;
  8.         using ExcelDna.Integration;

  9.         public class MyFunctions
  10.         {            
  11.             [ExcelFunction(Description="bulid SHA512 bits hash value", Category="Useful functions")]      
  12.             public static string SHA(string strPlain)
  13.             {
  14.                 SHA512Managed sha512=new SHA512Managed();
  15.                 string strHash=string.Empty;
  16.                 byte[] btHash=sha512.ComputeHash(UnicodeEncoding.Unicode.GetBytes(strPlain));
  17.                 for(int i=0;i<btHash.Length;i++)
  18.                 {
  19.                     strHash=strHash+Convert.ToString(btHash[i],16);
  20.                 }
  21.                 return strHash;
  22.             }
  23.         }            
  24.     ]]>
  25. </DnaLibrary>
复制代码


TA的精华主题

TA的得分主题

发表于 2012-12-2 21:39 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-12-2 21:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-12-2 21:49 | 显示全部楼层
请问写的自定义函数 要给别人用是不是除了给别人excel 和加载项 还需要别的文件吗?
不要和vsto一样麻烦 多出几个文件来 比较烦

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-2 22:50 | 显示全部楼层
本帖最后由 liucqa 于 2018-11-29 02:02 编辑
vs2010 发表于 2012-12-2 21:49
请问写的自定义函数 要给别人用是不是除了给别人excel 和加载项 还需要别的文件吗?
不要和vsto一样麻烦 多 ...

文件都在打包的xll里面

http://club.excelhome.net/thread-951920-1-1.html

https://www.bilibili.com/video/av34439971/ 这有视频教程

TA的精华主题

TA的得分主题

发表于 2012-12-3 16:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我曾经看到说做xll需要C++来做 现在用C#也可以做了吗?
还是写的源代码是等价代码?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-21 18:37 , Processed in 0.039011 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表