2010-02-12 71 views
1

我知道有很多关于如何从一个数据集或数据表将数据写入到excel的问题,但他们似乎都假定一个新的空白Excel工作簿。我有一个特殊的Excel文件,其中包含多张包含大量格式,公式和图表的文件。我只需要在一些表格的适当部分放置数据,然后让excel处理剩下的部分。数据集/数据表到Excel模板文件.NET

所以我需要一种方法来将数据插入到一个现有的excel文件,在一定的范围内(其可以根据行的数量而变化),但在特定片材。目前我使用COM互操作来写所有这些都是性能噩梦,需要改变。那么完成这个最好的方法是什么?

更多信息:我们有一个简单的MVC应用程序,让用户提交的数据的请求。它将这个控制台应用程序作为一个单独的过程来获取数据并生成excel文件。所以首先我们得到需要10-15秒的数据,然后我们将数据写入excel。这是对细胞的价值的实际写作,似乎一直在进行。 excel文件中的公式是否对写有影响我不知道,但这正是我想要避免的。

更新:事实证明式分别对写入的速度的主hindarence。我将Excel Application类的Calculation属性设置为XlCalculation.xlCalculationManual,现在运行速度更快!这不是我的问题的正确答案,但它是有效的。

谢谢shahkalpesh谁没有指出这一点,和CJ!

谢谢 杰夫

+0

图表的公式和更新,而单元格正在写入导致性能下降? ScreenUpdating? – shahkalpesh 2010-02-12 20:22:19

+0

@shahkalpesh:我不是在写公式,只是写数据,但是写出来一般都很慢。因为我们之后会将其作为电子邮件发送给用户,所以没有屏幕更新。我补充说,尽管有助于澄清。谢谢。 – 2010-02-12 20:33:18

+0

@Jeff:我的意思是,有时根据用户输入的一些值,有复杂的公式和/或图表。然后它对Excel工作簿UI的计算和刷新需要时间。你的情况可能会成为问题吗?要解决您的一些问题,请在基于VB6的组件或可执行文件中编写代码,并让它完成处理excel的工作。 – shahkalpesh 2010-02-12 20:37:02

回答

1

我已经经历了同样的事情。 COM Interop可能很痛苦......我不知道你的整个情况,但你可以简单地将数据表导出到XML。 (Datatable.WriteXML)然后使用VBA吸入数据并进行解析。使用所有的.NET会更干净,但VBA速度很快可能会非常快。

除此之外我发誓,有一个很好的免费的图书馆,在那里,将在Excel简化工作.NET。我不知道那里有什么类型的演出....另一个选择是VSTO(VSTO Development Home),这取决于你想做什么也许是一个很好的选择。祝你好运!

更新:在这里,你走这就是我正在寻找:File Helper

0

将让你插入一个DataTable到现有的工作簿,固定了公式和适当的格式 - 而不诉诸COM互操作。

数据表到Excel工作簿与格式和公式样品上this page用于与C#和VB源的活ASP.NET例子。

如果您想自己尝试,可以看到更多实况ASP.NET样本here并下载免费试用版here

声明:我自己的SpreadsheetGear LLC

0

在使用ADO的VBA中,

sh.Range("A2").CopyFromRecordset rs, 65536 

这比通过记录消磨快得多。有没有类似的VSTO方法?