2016-01-20 32 views
1

我正在使用EPPlus庫創建包含許多工作表的Excel工作簿。我想知道是否可以並行構建工作表。使用Parallel.For和EPPlus創建Excel工作表

package = new ExcelPackage(); 
int start = 1; 
int end = 100; 

Parallel.For(start, end; s => 
{ 
    var worksheet = package.Workbook.Worksheets.Add("Worksheet" + s.ToString()); 
    //routine to populate data here 
}); 
+0

只是看看他們的源代碼,它似乎是建立在多線程的至少一些想法。至少,這是有希望的。作爲一個注意事項,請注意,因爲'Parallel.For'完全不能保證按照特定的順序放置工作表,如果這對您很重要。 –

+0

工作表的順序對我無關緊要;我只想優化工作簿創建。我提前準備好所有數據,只需爲每個工作表切片/切塊/過濾器。 – codechurn

回答

1

採取的源代碼短期看:http://epplus.codeplex.com/SourceControl/latest#EPPlus/ExcelWorksheets.cs

正如你所看到的,添加方法如果存儲庫支持這種行爲我找不到(有限)文檔中提及調用使用lock(...)的AddSheet方法使操作線程安全,所以可以使用Parallel.For。

+0

我希望有一個明確的「我已經完成了,它工作正常」的答案,可能是我應該謹慎行事的地方。我想我只需要看看信息來源,並在我走的時候處理任何顛簸。 – codechurn

+1

@codechurn大約1年後,你的發現是什麼? – w33z33

+2

@ w33z33我一直在做這一年,沒有一個問題。在Visual Studio調試器中,我偶爾會(每300次中有一次)得到一個愚蠢的錯誤。我從來沒有在生產部署代碼中遇到問題。 – codechurn

相關問題