【问题标题】:Excel and RabbitMQ - Process RabbitMQ Messages in Excel?Excel 和 RabbitMQ - 在 Excel 中处理 RabbitMQ 消息?
【发布时间】:2015-03-29 15:21:10
【问题描述】:

我想从 Excel 2013 订阅 RabbitMQ 消息队列。

最终目标是允许在 Excel 中处理 MQ 消息中包含的数据,并允许 Excel 通过 RabbitMQ 消息队列发送格式化消息。

这可能吗?

从消息队列中向下发送的消息由 7 个字段组成,每个字段由 ; 分隔。符号 - 但是消息作为一个字符串通过消息队列发送...

例如"text;number;number;number;text,text,timestamp"

我希望能够将上述原始消息拆分为 Excel 2013 中的格式化单元格。

可以这样做吗?

我的编码经验有限,我正在努力学习,所以如果这是一个“愚蠢”的问题,请原谅我。

任何指针都将不胜感激,例如这可以通过 VBA 代码或 Excel 插件完成吗?

提前致谢...

【问题讨论】:

  • 我明白了,您希望 Excel 电子表格使用来自 RabbitMQ 的消息?
  • 嗨,菲尔,没错,理想情况下,我希望能够通过 MQ 队列接收“字符串”并将其拆分为“字段”,这样我就可以处理格式为excel....我也希望能够反过来,并将多个 excel 单元格的内容作为字符串分割发送;符号,例如。这是可能的吗?如果可以,你能指点一下吗?非常感谢...
  • 我不认为有什么开箱即用的东西,我会向您指出使用外部数据源和 excel 的方向 support.office.com/en-ca/article/… 可能会给您带来更多见解 @987654322 @
  • 谢谢 Phill,刚刚查看了链接,确实有一些非常有用的信息!

标签: vba excel rabbitmq excel-2013


【解决方案1】:

首先,坏消息:没有简单的方法可以做到这一点。

现在,好消息:如果你真的想要,你可能可以做到,至少有两种不同的方式。

免责声明我没有测试过任何东西,不能保证它会起作用,你(可能)需要提高你的编码技能来实现你想要的。这些只是我自己探索的想法,如果我有像你这样的要求,应该给你一些开始的指导。它们不一定是好的或实用的。

为了实现你想要的,有多种方法可供探索:

  • 在 .NET 中编写一个 Excel 插件以实际使用/发布到队列。这实际上可能是最简单的解决方案,但它需要 Visual Studio 和一点 .NET 知识。一些很好的入门资源: https://msdn.microsoft.com/en-us/library/bb157876.aspx 和一直很好的 https://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html
    • 优点:可能是最简单的解决方案
    • 缺点:您最终可能会得到一个与当前要求相关联的插件,并且必须在规范更改时更新您的插件
  • 利用 .NET 中的 COM 互操作来围绕 RabbitMQ 的 .NET 客户端库编写包装 DLL。如果您从未使用过 .NET,则此方法可能不合适,因为它将涉及编组数据类型和函数指针。如果你选择这个(困难的)路径,还有一些指针:Easiest way to make .NET DLL visible to COM?。然后,您可以通过将生成的 DLL 添加到您的 VBA 项目,将您的 COM 包装器导入任何 Excel/Office 项目。
    • 优点:您可以创建一个通用包装器,将 RabbitMQ 暴露给 Excel VBA,并在任何其他基于 Excel 的项目中重用它
    • 缺点:学习曲线会很陡峭。
  • 在您的 RabbitMQ 服务器上使用STOMPadapter(如果您有该选项可用,这可能会或可能不会取决于您的设置/系统管理员),并在 VBA 中编写您自己的实现。这有点硬核,但在没有任何 .NET 巫术的情况下也可以工作,但是您需要一个名为 MSWINSCK.OCX 的特殊 ActiveX 控件和一些事件处理。 StackOverflow 在这里有一个不错的答案示例:MSWinsock.Winsock event handling in VisualBasic
    • 优点:再一次,您可以创建可重用的代码(通过可以在其他项目中导入的类)
    • 缺点:您必须实现一个协议,并且它依赖于 ActiveX 控件。还需要使用 RabbitMQ 适配器,您可能无法在您的上下文中使用它。

很抱歉,我无法提供 实际代码 来展示您在这方面的表现,但正如您现在可能已经猜到的那样,所有解决方案都意味着相当多的工作。所以至少,你知道去哪里找……

【讨论】:

  • 谢谢 T。我非常感谢您为回答所花费的时间和精力。我是一名技术 IT 人员,所以我确实理解你所写的内容(我相信你会很高兴听到你所花费的时间!)
  • ...但我还没有足够的编码实践经验来自信地胜任。您提供的信息非常好,将真正帮助我就是否以及从何处开始做出一些决定。这是一个个人项目,而不是与我的工作相关的任何项目,所以它似乎也是一个学习的好机会。非常感谢! (第一次回复时遇到了 5 分钟编辑锁定规则 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
相关资源
最近更新 更多