Vas*_*hev 4 .net c# asp.net excel web-services
我有一个应用程序必须读取 excel 并将其转换为数组。到现在为止还挺好。一切正常,直到我尝试转换更大的文件。我尝试 OpenXML 并尝试 SAX 方法:
using (SpreadsheetDocument xlsx = SpreadsheetDocument.Open(filePath, false))
{
WorkbookPart workbookPart = xlsx.WorkbookPart;
List<List<string>> parsedContent = new List<List<string>>();
foreach (WorksheetPart worksheet in workbookPart.WorksheetParts)
{
OpenXmlReader xlsxReader = OpenXmlReader.Create(worksheet);
while (xlsxReader.Read())
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于 1 - 10MB 范围内的文件。我的问题是当我尝试加载 10+ MB 的文件时。结果是 OutOfMemoryException。如何正确读取大块数据?如何做到内存高效?
Ps 我尝试使用 ClosedXML、EPPlus 和其他一些库。
每个解决方案将不胜感激。先感谢您
如果您计划只读取 excel 文件内容,我建议您使用ExcelDataReader库而不是Link,它将 worksheetData 提取到 DataSet 对象中。
IExcelDataReader reader = null;
string FilePath = "PathToExcelFile";
//Load file into a stream
FileStream stream = File.Open(FilePath, FileMode.Open, FileAccess.Read);
//Must check file extension to adjust the reader to the excel file type
if (Path.GetExtension(FilePath).Equals(".xls"))
reader = ExcelReaderFactory.CreateBinaryReader(stream);
else if (Path.GetExtension(FilePath).Equals(".xlsx"))
reader = ExcelReaderFactory.CreateOpenXmlReader(stream);
if (reader != null)
{
//Fill DataSet
DataSet content = reader.AsDataSet();
//Read....
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9170 次 |
| 最近记录: |