我在使用数据阅读器上传大型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();
}
答案 0 :(得分:0)
您可以尝试使用以下内容将文件加载到内存中:
Stream exportData = new MemoryStream(byte[] fileBuffer);