/DataBox

Add-in built with a combination of Rust and CSharp!

Primary LanguageC#MIT LicenseMIT

DataBox

简体中文 English

DataBox是一个基于Excel-DNA的Excel加载项

部分核心功能使用Rust实现, 速度快到不可思议

如果您是普通用户, 希望DataBox可助您高效办公

如果您是程序员, 希望DataBox给您带来新的启发(注释已经抓紧再写!)

安装使用

自动安装/手动安装

点击查看

从源码构建

1. 拉取此项目
2. 安装Rust(Version>=1.80.0)
3. 安装Python(Version>=3.8.1)
4. 运行此项目的build.py
5. 安装Visual Studio
6. 打开项目的DataBox.sln
7. 还原NuGet程序包
8. 编译DataBox

示例

为了让您快速使用DataBox, 此项目提供了一个示例文件

函数介绍

函数名称加粗的函数为溢出型函数

参数名称加粗的参数可为范围参数

参数名称标记下划线的参数为可选参数

1 时间计算

函数名称 函数说明 参数说明
AdjustTime(Time, Year, Month, Day, Hour, Minute, Second) 调整给定时间 Time:给定时间
Year:年
Month:月
Day:日
Hour:时
Minute:分
Second:秒
SecToTime(Sec) 将秒转换为[hh]:mm:ss格式的时间 Sec:需转换的秒数
TimeSub(TimeI, TimeN) 计算两个时间的差值
输出以秒为单位
TimeI:第一个时间
TimeN:第二个时间
TimeSub2(TimeI, TimeN, Includ) 计算两个时间在计算在内时间中的差值
输出以秒为单位
TimeI:第一个时间
TimeN:第二个时间
Includ:计算在内的时间

2 坐标计算

函数名称 函数说明 参数说明
Distance(Lon1, Lat1, Lon2, Lat2) 计算两个WGS84坐标经纬度之间的距离
输出以米为单位
Lon1:第一个经度
Lat1:第一个纬度
Lon2:第二个经度
Lat2:第二个纬度
GetPOI(Lon, Lat, Key) 获取WGS84坐标的基本POI信息
Key需在高德开放平台申请
Lon:经度
Lat:纬度
Key:服务Key
ToGCJ02(Lon, Lat, Key) 将WGS84坐标转国测局坐标
Key需在高德开放平台申请
Lon:经度
Lat:纬度
Key:服务Key

3 文本处理

函数名称 函数说明 参数说明
IsMatch(Input, Pattern) 检查输入的字符串是否可被正则表达式匹配
匹配成功返回True 失败则返回False
Input:输入的字符串
Pattern:正则表达式
Matches(Input, Pattern, Label) 返回输入的字符串在正则表达式中匹配到的所有(标签)内容 Input:输入的字符串
Pattern:正则表达式
Label:标签, 可选参数, 标签需带"$"号
Replaces(Input, Pattern, Replace) 替换输入的字符串中被正则表达式匹配到的部分为指定字符串 Input:输入的字符串
Pattern:正则表达式
Replace:指定字符串, 标签需带"$"号

4 范围处理

函数名称 函数说明 参数说明
VLOOKUP2(Value, Array, Finds) VLOOKUP函数的升级版
该函数返回多个查找的结果
当未找到结果时返回#VALUE!错误
数据多时建议使用数据快查功能
Value:指定值
Array:指定范围
Finds:返回范围
ANDS(Lhs, Rhs) LhsRhs按顺序进行AND操作 Lhs:左值范围
Rhs:右值范围
ORS(Lhs, Rhs) LhsRhs按顺序进行OR操作 Lhs:左值范围
Rhs:右值范围
XORS(Lhs, Rhs) LhsRhs按顺序进行XOR操作 Lhs:左值范围
Rhs:右值范围
NOTS(Array) Array进行NOT操作 Array:指定范围

5 数据快查

在使用以下函数前请先在功能区中绑定数据

函数名称 函数说明 参数说明
FLOOKUP(Key, SerialNumber) 在索引中检索给定值并返回对应数据 Key:给定值
SerialNumber:数据所在列的序号
FCOUNTS(Key) 统计给定值在索引中出现的次数 Key:给定值
FGETKEY() 获取去重后的索引

真值表

AND(与) OR(或) NOT(非) XOR(异或)
False AND False = False False OR False = False NOT False = True False XOR False = False
False AND True = False False OR True = True NOT True = False False XOR False = True
True AND True = False False OR True = True False XOR False = True
True AND True = True False OR True = True False XOR False = False

正则表达式

正则表达式在线学习or练习网站(https://regex101.com/)

设置中文:点击左边设置按钮->Language选项选择Chinese

请设置语言风格Rust

正则引擎遵守Unicode® Technical Standard #18规范(https://www.unicode.org/reports/tr18/)

字符集可参考Regex Tutorial - Unicode Characters and Properties(https://www.regular-expressions.info/unicode.html#prop)

基本表达式 描述
. 匹配除换行符外的任何字符
[0-9] 匹配任何ASCII数字
\d 数字, 包括𝟙𝟚𝟛这样的数字
\D 非数字
\p{字符集} 匹配给定字符集
\P{字符集} 不匹配给定的字符集
[xyz] 匹配所有的xyz
[^xyz] xyz之外的都匹配
[a-z] 匹配所有的小写字母a-z
[[:alpha:]] 匹配所有的大小写字母, 等同于[A-Za-z]
[[:^alpha:]] 除所有的大小写字母都匹配, 等同于[^A-Za-z]
[x[^xyz]] 嵌套/分组模式, 匹配除yz之外的任何字符
[a-y&&xyz] 交集模式, 匹配xy
[0-9&&[^4]] 使用交集和求反进行减法, 匹配0-9, 但不包括4
[0-9--4] 直接减法, 匹配0-9, 但不包括4
[a-g~~b-h] 对称差值, 仅匹配ah
[\[\]] 转义, 匹配[]
xy 匹配所有的xy
x|y 匹配xy
x* 匹配0个或多个x, 该模式为贪婪匹配, 会尽可能多的匹配
x+ 匹配1个或多个x, 该模式为贪婪匹配, 会尽可能多的匹配
x? 匹配0个或1个x, 该模式为贪婪匹配, 会尽可能多的匹配
x*? 匹配0个或多个x, 该模式为非贪婪匹配, 也就是懒匹配, 会尽可能少的匹配
x+? 匹配1个或多个x, 该模式为非贪婪匹配, 也就是懒匹配, 会尽可能少的匹配
x?? 匹配0个或1个x, 该模式为非贪婪匹配, 也就是懒匹配, 会尽可能少的匹配
x{n,m} 匹配n-m之间数量的x, 包括nm, 该模式为贪婪匹配, 会尽可能多的匹配
x{n,} 匹配至少nx, 该模式为贪婪匹配, 会尽可能多的匹配
x{n} 匹配刚好nx
x{n,m}? 匹配n-m之间数量的x, 包括nm,该模式为非贪婪匹配, 也就是懒匹配, 会尽可能少的匹配
x{n,}? 匹配至少nx, 该模式为非贪婪匹配, 也就是懒匹配, 会尽可能少的匹配
x{n}? 匹配刚好nx
\b Unicode单词边界
\B 非Unicode单词边界
分组模式 描述
(基本表达式) 给匹配内容分组
(?<name>基本表达式) 给匹配的分组命名, 名称必须为字母数字
(?:基本表达式) 非捕获的内容分组
(?标志) 在当前组中设置标志
(?标志:基本表达式) 为匹配内容设置标志, 非捕获模式
标志 描述
i 不区分大小写:字母同时匹配大写和小写
m 多行模式
s 允许.匹配换行符
R 启用CRLF模式:启用多行模式时, 允许匹配\r\n
U 交换贪婪匹配和非贪婪匹配的含义
u 默认匹配规则
x 注释模式, 忽略空格并允许行注释, 注释以#开头

贡献

如果您有好的建议, 请复刻Fork本仓库并且创建一个拉取请求(pull request)

当然您也可以提交一个issue, 并且添加标签(enhancement)

不要忘记给项目点一个Star, 再次感谢❗❗❗

赞助

DataBox是一个开源项目, 您毫不吝啬滴赞赏和Star是对此项目的最大肯定

Alipay WeChat

开源协议

DataBox采用MIT开源协议

现存问题说明

  • 在旧版WPS中溢出型函数的计算结果不会完整显示, WPS最新版与Excel中则可以正常显示计算结果, 旧版WPS不支持溢出型函数
  • GetPOIToGCJ02函数中所使用的Key需在高德开放平台申请Web服务类型的Key且这两个函数需要网络连接

加载项使用中有任何建议、反馈、疑问请与我联系

WeChat:C0-Coke

Email:web-chang@foxmail.com