什么(如果有的话)是使用.NET与MS Excel交互的(免费)替代scheme?

背景:我正在努力决定是否要通过Interop使用C#自动化Excel。 我当然不是一个VBA的人,出于很多原因,我宁愿不走这条路。 我不太了解其他的select,我真的不想买任何东西。

性能是非常重要的。

我试图find使用Interop的自动化Excel的参考,它似乎相当稀疏​​。 一些更好的东西是过时的 ,其他参考资料并不包括很多材料。 许多人认为现有的许多材料花时间关注MS Office版本的差异。 我也想知道,转移到.NET 4的改进是否是重要的。

编辑:我试图完成的关键是完全自动化相当复杂和复杂的格式,以及一些相当繁重的分析(线性回归)。 我需要分析/计算一次图表数据,图表格式非常重要,因为我所从事的工商pipe理硕士是这么说的。 我想所有这一切都可以通过VBA,但我不知道,因为我不是一个VBA的家伙。 认为应用程序隐藏的macrostypes的东西,所以它作为后台进程运行。 性能是至关重要的(我质疑COM的适当性的原因之一)。 由于性能方面的考虑,VBA甚至可能脱离桌面。

现在,问题。

我可以简单地问一下这个问题的最好方法是: 你有没有在Excel中用Interop做的事情的一个清单,你希望能够做到 ? 你的开发经验如何?

如果真的没有什么你不能用Interop做的(见下面的评论),这是最适合我打算做什么,考虑到COM和学习使用它的最好方法是什么 Excel对象模型可能是一个相当吓人的工作。 那里真的有很好的参考吗?

如果还有更好的办法可以告诉我关于这个的吗? 提到了Excel DNA,但是我不能看到它比允许创build用户定义的C#函数更有帮助,这些C#函数可以到达后端服务器应用程序或数据库。

你的问题没有正确的答案,这一切都取决于细节和背景。

与Excel对象模型(get / put数据格式化图表等)交互时的互操作性能总是会相对较慢,因为COM之上还有额外的层。
.Net计算速度可能比VBA计算速度快,特别是VBA代码写得不好。
.NET框架比VBA框架更加强大和复杂。
Excel对象模型庞大而复杂。 VBAmacroslogging器可以帮助这个,但产生apalling代码。
XLL接口比COM快,但暴露的Excel对象模型较less。

考虑到你的描述,我的猜测是,你会得到更好的性能,易于学习和使用VBA,而不是.NET,因为大部分时间似乎可能花在与对象模型交互上,而不是做线性回归计算不是恕我直言特别是CPU密集型)。
当然,其他的考虑可能会让你更喜欢.NET