Мне приходится иметь дело с очень большим файлом Excel.этот файл содержит исторические данные клиента, и мне нужно преобразовать данные листа Excel в объект таблицы данных.объект таблицы данных будет передан другому процессу для анализа.
Мне нужен очень быстрый способ преобразования данных рабочей таблицы в таблицу данных.Любая идея об этом?
В настоящее время я использую Aspose, но это занимает около 23 минут, чтобы сделать преобразование.Я пробовал OleDb, это было очень быстро, но он просто работал с физическим файлом и требовал данные файла path.my, доступные в виде массива байтов.Я не хочу записывать их на диск и использовать физический путь в соединении OleDB.
Я пробовал OpenXml, но он был очень медленным (это заняло более часа)
Использование Aspose:
Workbook workbook = null;
loadOptions.MemorySetting = MemorySetting.MemoryPreference;
using (Stream stream = new MemoryStream(file))
{
workbook = new Workbook(stream, loadOptions);
}
var worksheet = workbook.Worksheets[0];
DataTable dataTable = worksheet.Cells.ExportDataTableAsString(
0,
0,
worksheet.Cells.MaxDataRow + 1,
worksheet.Cells.MaxDataColumn + 1,
true);
заняло около 23 минут
Использование OleDB:
var fileName = "e:\\test1.xlsx";
var query = "SELECT * FROM [Data$]";
using (OleDbConnection cn = new OleDbConnection { ConnectionString = this.ConnectionString(fileName, "No") })
{
using (OleDbCommand cmd = new OleDbCommand { CommandText = query, Connection = cn })
{
cn.Open();
OleDbDataReader dr = cmd.ExecuteReader();
dt.Load(dr);
}
}
заняло около 2,5 минут
Мне нужен быстрый способ преобразования листа Excel в таблицу данных для большого файла Excel (250 МБ) менее чем за 2,5 минуты.Данные из файла Excel доступны в объекте Stream.