3

首先,这个问题并不是要讨论 C# 与 VBA 的整体优点。我有一个项目,其中有一些更适合 C# 的部分和其他似乎更适合 VBA 的部分,我正在尝试找出如何最好地构建我的开发,因为我没有时间以几种不同的方式构建它并且看看哪个更快。我在这里发布这个问题是因为我可能没有考虑过一种语言的某些东西,这显然使它成为该项目更具吸引力的选择。

该项目:

  1. 通过 Web 服务查询或刷新链接到该列表的 Excel 工作表的内容,从 Sharepoint 列表中获取数据集。

  2. 使用集合字段之间的不等关系将 Sharepoint 数据集连接到工作簿文件名的 Excel 数据集。这将是多对多的。

  3. 对于每组匹配项中的每个工作簿,将其部分数据导出到不同文件夹中的新工作簿,以便每个匹配组位于其自己的文件夹中。

  4. 将所有文件夹压缩到一个存档中。

第 1 步似乎 .NET 或 VBA 都可以满足要求。第 2 步似乎更适合 C#,因为它涉及使用 LINQ 而不是一堆 VBA 循环更容易完成的连接查询。第 3 步涉及 Excel 数据传输,这使 VBA 成为更好的候选者,因为我读过很多帖子都同意 VBA 比 .NET Interop for Office 操作更快。第 4 步似乎在 C# 中会更好,因为我可以使用 DotNetZip 而不必依赖 shell 命令。

但是 C# 和 VBA 的混合比单一语言解决方案更不方便维护。所以我不确定我应该采取什么方法。

4

2 回答 2

2

您提到的支持 VBA 的唯一一点是与 Excel 交互时的性能提升。

与 VBA 相比,从 C# 与 Excel 交互的开销与其他任务的成本相比可以忽略不计:数据检索、计算......

如果不是,则意味着您做的不好:例如填充值或逐个应用单元格格式。

作为一般规则,如果应用程序的维护者没有足够的开发技能来使用 C#并且不想学习一门新语言,则应该只使用 VBA。

通常情况下,维护者是只知道如何制作基本宏的最终客户,如果您的 C# 插件有任何问题,将完全无能为力。

于 2012-12-14T18:10:17.807 回答
2

看你的要求...

第 1 部分 - Excel 在获取 xml 数据或进行 Web 服务查询时没有真正的问题。我在 Excel 2002 中做过这种事情。

第 2 部分 - 也许你是对的,数据集成在语法上会更好,并且可能在 C# 中得到更好的优化 - linq 非常方便。但这取决于集成是什么。

第 3 部分绝对是 vba 领域,所有更新等。

通过不打开 cmd 窗口,在 c# 中执行此操作的第 4 部分可能看起来更漂亮的 UI - 但代码真正运行的频率与隐藏它们的难易程度。

其他考虑...

除非您进行后期绑定,否则您的 C# 应用程序将与 Excel 版本绑定(当您添加引用时包含 excel 版本会赠送)。如果您部署了新版本的 Excel,那么您必须更新您的 C# 应用程序,其中 vba 最有可能“正常工作”。

资源也不应该有问题——你说你有 C# 开发人员,任何有能力称自己为开发人员的人都应该能够很快适应他们可能会为 .net 开发引用的主要程序语言和库同样在 C# 或 VB.Net 中 - 这不像你在 F# 中编写它。

由于您有一个要合并的 excel 数据集,因此将所有依赖项保持在一起还有很多话要说。

vba 最大的缺点是,如果你把它交给其他人,他们可能会想修补它而不会被编译。:)

考虑到所有因素,我建议使用 VBA 解决方案,因为它将是这项工作最合适的工具。不过,没有任何“引人注目的问题”会极大地改变它。

于 2012-12-14T22:28:43.480 回答