用EPPlus加载大量的Excel数据

我有一个基本的WinForms应用程序,用户可以上传一个Excel文件(.xlsx),我想阅读这个文件的内容,所以我使用EPPlus。

问题是,我想加载一个非常大的ex​​cel文件的内容,它有7个选项卡,一个选项卡具有超过200K行,另一个选项卡70K。 其他5个总共约50k。

(最终目标)因为我想导入数据,读取数据,根据我有的规则/数据,我需要把数据写回excel文件并导出。

EPPlus在实现数据加载时遇到了问题。

这里是代码

var file = new FileInfo(filePath); using (var package = new ExcelPackage(file)) { try { // Get the work book in the file ExcelWorkbook workBook = package.Workbook; //Hangs here for about 2 mins if (workBook != null) { if (workBook.Worksheets.Count > 0) { // Get the first worksheet ExcelWorksheet currentWorksheet = workBook.Worksheets.First(); // gets the currentWorksheet but doesn't evaluate anything... } } } catch (Exception ex) { throw ex; } } 

代码挂在package.workbook行大约2分钟。 然后它进入到如果它得到currentWorkSheet,如果我看在我的手表variables的内容,没有什么是真的加载,因为它显示:

function评估由于之前的function评估超时而被禁用。 您必须继续执行以重新启用function评估。

我从EPPlus看了这个链接 ,它显示了加载大文件的唯一问题是从上到下,从左到右的加载,他们说5000多。 我有更多的方式,所以我只是想知道EPPlus是否可以做到这一点?

此外,我已经做了一些谷歌search,大部分问题是他们无法打开服务器上的大型Excel文件,他们可以在本地…

我也开始研究Open XML SDK,它看起来更好的performance明智,但也更难以使用代码明智的。

这听起来像很大的数据集,所以你可能想读这个:

内存不足exception的EPPlus大型数据集问题

基本上,你可以用“更大的”数据集用完RAM。 但不仅仅是增加了大小的行数,还包括了每个单元格的列和内容。 string通常会占用比数字更多的空间,所以有时难以预测何时EPP将会出现内存问题。 有传闻说EPP的最新版本比较好,但是我自己没有testing过。

似乎你得到它的工作根据您的意见,这很好,但要记住的内存限制。 我同意你的意见 – 在Open XML中这样做不是一个简单的练习。