如何在少数用户之间共享Excel(VSTO)中的数据?

时间:2017-05-11 21:43:40

标签: c# excel vsto

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

  1. 这就是我在之前的项目中所做的 - 使用C ++创建了一个excel加载项。使用加载项代码加载内存中的数据并对其进行处理。对于每种类型的数据,我已将处理后的数据发送到工作表并保存新的Excel文件。这样,如果我有三种类型的数据,我创建了三个新的excel工作簿。然后,我的用户打开了这些新工作簿,进行了更改并删除了包含其更改的文本文件(通过按钮)。主excel继续轮询这些更新(文本文件)并在找到它们后立即加载它们。这就是我从用户那里获得更新的方式。

  2. 我不喜欢我在之前的项目中所做的,它产生了太多临时文件(当然我可以删除它们)。在我目前的项目中,我想使用C#VSTO工作簿,以便我可以更好地控制excel。我希望一旦我加载数据,我会要求我的用户以只读模式打开相同的Excel,他们将进行更改。在测试时,我意识到用户的excel(以只读方式打开)模式看不到加载的数据。并且他们的更改不会更新内存中保存的数据。这可能意味着我不知道自己在做什么。

  3. 你们有任何想法如何实现这一目标吗?我将非常感谢任何帮助/提示。

1 个答案:

答案 0 :(得分:2)

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

使用VSTO,您可以像使用C ++加载项一样,但在C#中(意味着,功能集是1:1 - 它基本上只包含C ++ COM Excel API for .NET)

但是对于Excel的在线版本,可能还有另一种选择 - javascript addins(现在被称为" Office Addins",afaik)。但我怀疑你是否想要处理你的大量数据"用javascript。

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

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

当然,如果您的3个用户住在3个荒岛上,完全与任何东西断开连接,那么用USB记忆棒上的文本文件进行交换可能仍然是唯一可行的选择......

我认为" web"解决方案可能是:将您的文件存储在一些"共同创作" - 能力服务(sharepoint,google shees,onedrive,officeonline等)中。制作一些Web作业以自动更新该存储中的该文件。就像一个"第四个"用户会做的。