我有一个基本的 winforms 应用程序,用户可以上传 excel 文件 (.xlsx),并且我想读取该文件的内容,因此我使用 EPPlus。
问题是,我正在尝试加载一个非常大的 Excel 文件的内容,它有 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 分钟。然后它进入 if 获取 currentWorkSheet 的位置,如果我在手表中查看该变量的内容,则不会真正加载任何内容,因为它显示:
由于先前的函数评估超时,函数评估被禁用。您必须继续执行才能重新启用函数评估。
我看了这个来自 EPPlus,它显示加载大文件的唯一问题是从上到下、从左到右加载,他们说超过 5,000 个。我有更多的东西,所以我只是想知道这是否可以通过 EPPlus 实现?
此外,我做了一些谷歌搜索,大多数问题是他们无法在服务器上打开大型 Excel 文件,而他们可以在本地打开...
我也开始研究 Open XML SDK,它似乎在性能方面更好,但在代码方面使用也更加困难。