背景:我正在尝试决定是否走上通过 Interop 使用 C# 实现 Excel 自动化的道路。我当然不是 VBA 人员,并且出于多种原因,我不想走这条路。我对其他选择不太了解,而且我真的不想买任何东西。
性能非常重要。
我尝试查找有关使用 Interop 自动化 Excel 的引用资料,但似乎相当稀疏。一些更好的东西是 dated其他引用文献并没有涵盖很多内容。许多人指出,许多现有 Material 都花时间关注 MS Office 版本的差异。我还想知道迁移到 .NET 4 所带来的改进是否具有实质性。
编辑:我想要完成的关键是相当复杂的格式化以及一些相当繁重的分析(线性回归)的完全自动化。我需要在分析/计算后对数据进行图表化,图表格式非常重要,因为与我一起工作的 MBA 都这么说。我想所有这一切都可以通过 VBA 实现,但我不确定,因为我不是 VBA 人员。考虑隐藏应用程序的宏类型内容,以便它作为后台进程运行。性能至关重要(这是我质疑 COM 是否合适的原因之一)。由于性能方面的考虑,VBA 甚至可能被排除在外。
现在,回答问题。
我可以简洁地问这个问题的最佳方式是:是否有一份 list 列出了您无法使用 Excel 中的 Interop 执行但您希望能够执行的操作?在您的开发经验中,您是如何解决这个问题的?
如果确实没有什么是你不能使用 Interop 做的(请参阅下面的评论),并且它最适合我想要做的事情,学习使用 Interop 的最佳方法是什么考虑到 COM 和 Excel 对象模型可能是一项相当令人生畏的任务。那里真的有很好的引用吗?
如果我有更好的方法来解决上述问题,您能告诉我吗?有人提到了 Excel DNA,但我认为它比允许创建可以访问后端服务器应用程序或数据库的用户定义的 C# 函数更有帮助。
最佳答案
您的问题没有正确答案:这完全取决于细节和背景。
由于 COM 之上有额外的层,与 Excel 对象模型(获取/放置数据格式化图表等)交互时的互操作性能始终相对较慢。
.Net 计算速度可能比 VBA 计算速度更快,尤其是在 VBA 代码写得不好的情况下。
.NET 框架比 VBA 框架更强大、更复杂。
Excel 对象模型庞大且复杂。 VBA 宏记录器对此很有帮助,但会产生令人震惊的代码。
XLL 接口(interface)比 COM 更快,但公开的 Excel 对象模型更少。
根据您的描述,我的猜测是,使用 VBA 而不是 .NET,您会获得更好的性能、更易于学习和使用,因为似乎大部分时间都花在与对象模型交互上,而不是进行线性回归计算(恕我直言,这不是特别占用 CPU 资源的)。
但是当然,其他考虑因素可能会让您更喜欢 .NET
关于c# - 使用 .NET 与 MS Excel 进行 COM 互操作的(免费)替代方案是什么(如果有的话)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9336585/