如何处理大型excel文件?

时间:2013-11-28 13:48:41

标签: c# excel datareader large-data

我在使用数据阅读器上传大型Excel文件(300mb +)时遇到问题。使用此代码,我打开excel文件并分别加载每一行。使用断点我注意到一个语句需要30s +。内存使用量也有稳定增长。 指定ExecuteReader()方法的CommandBehavior参数(例如SequentialAccess)无效。

我在这里做错了什么?是否有其他方法可以处理大型(excel)文件?

const string inputFilePath = @"C:\largefile.xlsx";
const string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=\"Excel 12.0;IMEX=1;HDR=YES;\";Data Source=" + inputFilePath;
using (var connection = new OleDbConnection(connectionString))
{
    connection.Open();
    var command = new OleDbCommand("largesheet$", connection) {CommandType = CommandType.TableDirect};
    var reader = command.ExecuteReader(); // <-- Completely loads file/sheet into memory
    while (reader.HasRows)
    {
        reader.Read();
    }
    connection.Close();
}

1 个答案:

答案 0 :(得分:0)

您可以尝试使用以下内容将文件加载到内存中:

Stream exportData = new MemoryStream(byte[] fileBuffer);