如何在Excel中保存数据(VSTO)在less数用户之间共享?

我必须加载大量数据,预处理数据,在less数用户之间共享,最后从用户那里收集更新。

  1. 这就是我在以前的项目中所做的 – 使用C ++创build了一个excel插件。 使用加载项代码加载内存中的数据并对其进行处理。 对于每种types的数据,我都将处理后的数据发送到表格并保存了一个新的excel文件。 这样,如果我有三种types的数据,我已经创build了三个新的Excel工作簿。 然后,我的用户打开了这些新的工作簿,进行了更改,并删除了一个包含其更改的文本文件(通过button)。 主要的excel保持轮询这些更新(文本文件),并加载它们一find。 这就是我从用户那里获取更新的方式。

  2. 我不是我在之前的项目中做的事情的粉丝,它产生了太多的临时文件(当然我可以删除这些文件)。 在我目前的项目中,我想使用C#VSTO工作簿,这样我就可以对Excel有更多的控制权。 我希望一旦我加载数据,我会要求我的用户在只读模式下打开相同的Excel,他们将进行更改。 在testing这个时,我意识到用户的excel(以只读方式打开)没有看到加载的数据。 而且他们的更改不会更新内存中保存的数据。 这可能意味着我不知道我在做什么。

你们有什么想法如何做到这一点? 我会很感激任何帮助/提示。

Excel支持所谓的“共同创作”模式,当许多人可以同时编辑同一个文档时。 但是可能有一个问题:afaik,您需要一个共享点/ Office Online服务器/ OneDrive Business来支持这种情况(您需要一个非免费的办公文档服务器产品)。

使用VSTO,您可以完成与C ++外接程序相同的操作,但是在C#中(意思是,这组function是1:1 – 基本上只是包装.NET的C ++ COM Excel API)

但是对于在线版本的Excel,可能还有另外一种select – javascript插件(现在叫做“Office Addins”,afaik)。 但我怀疑你会想用JavaScript来处理你的“大量的数据”。

所以我会说,有一个很好的规则:不要修复那些没有被破坏的东西:)

如果问题是临时文件的数量,这些文件不是在应用程序之间传输数据的唯一选项。 您知道,您可以直接连接两个应用程序(以便他们可以与消息/更新交换数据)。 使用networking,卢克:)

当然,如果你的3个用户居住在3个荒岛上,完全与任何东西断开,与U盘上的文本文件交换可能仍然是唯一可行的select…

我认为“networking”解决scheme可能是:将您的文件存储在一些“共同创作”function的服务中(共享点,谷歌search,onedrive,officeonline等等)。 使一些Web作业自动更新该存储中的文件。 就像“第四”用户会这样做。