gpt4 book ai didi

c# - 读取大型 XLSX 文件

转载 作者:行者123 更新时间:2023-11-30 20:33:01 25 4
gpt4 key购买 nike

我有一个应用程序必须读取 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())
{
}
}
}

这适用于 1 - 10MB 范围内的文件。我的问题是当我尝试加载 10+ MB 文件时。结果是 OutOfMemoryException。如何正确读取那大块数据?如何做到内存高效?

附言我尝试使用 ClosedXML、EPPlus 和其他一些库。

我们将不胜感激每一个解决方案。提前谢谢你

最佳答案

如果您计划只读取 excel 文件内容,我建议您改用 ExcelDataReaderLink ,它将 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....
}

关于c# - 读取大型 XLSX 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40716879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com