Excel in parallel

本文关键字:parallel in Excel | 更新日期: 2023-09-27 18:07:18

我有一个程序,在excel中插入数据并创建图形。所有的"数字运算"都是在程序中完成的(使用linq),所以excel只用于创建图形。最终的excel有大约300个工作表(50个数据表和250个图表)。这就是性能问题。虽然linq和regex的操作非常快,但excel需要4分钟以上才能生成所有图形。我考虑了并行扩展,并将图形拆分为5个excel文件。

我的问题是我是否在浪费时间。我的意思是:4分钟250张图相当于每张图1秒。excel是否应该比这更快地生成图形?我还注意到,当文件较大时,excel(和大多数程序一样)的运行速度会变慢。如果你有一个10MB的excel,插入一个图表需要1秒,如果你有一个10KB的excel,它插入的时刻(可能这只是我的印象…)。

如果答案是我应该使用并行扩展,我应该使用相同的excel应用程序和不同的excel文件或更好的不同的excel应用程序为每个文件?

Excel in parallel

尝试用Excel做这些将会导致很多痛苦。使用众多优秀的。net图表库之一来制作图表。

如果出于其他原因你必须使用Excel,那么你将需要单独的工作簿。一次只有一个线程可以操作工作簿。我相信多线程可以在多个工作簿上并行操作,虽然我自己从来没有这样做过,但我认为没有理由不工作。

很有可能你现有的代码可以显著加快。您是否禁用屏幕更新,同时添加数据到Excel?自动重新计算是否被禁用?您是将数据逐单元推入Excel,还是一次性推入整个范围?一个细胞接一个细胞的速度慢得惊人。您希望尽量减少对Excel的调用次数,因为调用进程外COM服务器的IPC成本非常高。