5个版本
0.1.5 | 2023年5月29日 |
---|---|
0.1.3 | 2023年2月20日 |
0.1.2 | 2022年7月18日 |
0.1.1 | 2021年12月17日 |
0.1.0 | 2021年12月11日 |
#1681 in 网络编程
每月下载 22次
54KB
1.5K SLoC
这是一个Excel COM插件,允许使用=RTD()
公式从Netidx中拉取实时数据。
假设你发布了一些数据,可能来自shell发布者,你想要向你的老板展示,但“那个命令行东西”或“那个linux东西”不是你的老板会做的事情。
> netidx publisher --bind 192.168.0.0/24 --spn publish/[email protected]
/test/foo|array|[42, -42]
/test/bar|i32|42
/test/baz|i32|-42
如果你在老板的机器上安装了这个插件,那么他可以将这些数据拉入Excel工作表中的一个单元格,你就可以停止担心如何向这些“头发尖尖的人”展示结果,完成你的工作。
关键点是,如果netidx中的某个值更新,Excel将几乎立即更新,你的老板的交叉表也将更新。csv导出离死亡更近一步了!
语法
=RTD("netidxrtd",, PATH)
PATH
当然可以是一个引用,或另一个公式,这是Excel,你的老板知道Excel... 对吧?
性能
即使你订阅了很多数据,或者你订阅了更新很快的数据,Excel也应该保持响应,因为RTD是限流的,所有的netidx处理都在后台线程池中完成。例如,这里Excel通过订阅压力发布者将我的wifi网络用到了极致,但它仍然完全响应。它实际上每秒正在拉取200万次更新,这是由网络限制的,而不是CPU。
构建
这里有一些预先构建的二进制文件在这里
但是如果你想自己构建它,你需要一台Windows机器(显然),可能是Windows 10或更高版本,但Windows 8也可能行。你需要安装rust,最简单的方法是使用rustup。你需要安装git。一旦安装了这两样东西,
> git clone https://github.com/estokes/netidx-excel
> cd netidx-excel
> cargo build --release
dll应该构建在target/release/netidx_excel.dll
安装
安装时,您需要决定dll文件要存放在哪里,这实际上并不重要,但我把我的dll放在了C:\Program Files\netidx-excel
。然后您需要以管理员身份运行regsvr32
来注册dll作为合适的COM服务器。所以,在管理员PowerShell中,
> mkdir 'C:\Program Files\netidx-excel'
> cp target\release\netidx_excel.dll 'C:\Program Files\netidx-excel'
> regsvr32 'C:\Program Files\netidx-excel\netidx_excel.dll'
最常见的错误是regsvr32
不在您的路径中,或者您的shell没有以管理员权限运行。
您可能还需要打开dll的属性,并“解除阻止”它(如果您下载的是二进制文件而不是自己构建)。
64位Windows上的32位Office
如果您正在运行32位版本的Office,可能是因为您的内存有限,那么您还需要安装netidx_excel32.dll,并且您需要像上面一样运行regsvr32。如果您是从源代码构建的,您需要安装目标i686-pc-windows-msvc
,并使用该目标构建32位dll,例如cargo build --target i686-pc-windows-msvc --release
,然后dll将位于target/i686-pc-windows-msvc/release
而不是target/release
。
限制
- 无写支持;除了时间之外,没有真正的理由,这完全可能
- 无发布支持;同样,没有真正的理由,完全可能,但比写操作需要更多的时间
- 无解析器列表支持;再次,时间是问题,但在这方面没有真正的问题
- 如果人们关心,我可以移除安装时需要管理员权限的要求,但那时您就需要为机器上的每个用户运行
regsvr32
其他
我在Windows上编程了一个月,以确保您永远不会。因为相信我,您永远不会想这么做。但如果您对这个月我梦见了什么感兴趣,请在睡前阅读这篇文章Inside COM+。真的,不要这么做。COM在历史上有某个时刻似乎是个不错的想法,对吧?开发者!开发者!开发者!...开发者!我的意思是,GObject现在看起来真是太棒了,真的。
依赖项
~181MB
~3M SLoC