Мне нужно экспортировать большие объемы данных> 1 миллиона. Вот готовая функция, но она работает очень медленно.
public void ExportToExcel(string path)
{
var doc = new Excel.Application();
var wb = doc.Workbooks.Add();
Excel._Worksheet ws = (Excel.Worksheet)doc.ActiveSheet;
ws.Cells[1, "A"] = "Дата";
ws.Cells[2, "B"] = "Имя";
ws.Cells[3, "C"] = "Фамилия";
ws.Cells[4, "D"] = "Отчество";
ws.Cells[5, "E"] = "Город";
ws.Cells[6, "F"] = "Страна";
var check = pers.AsNoTracking().ToList();
for (int i = 0; i < check.Count(); i++)
{
ws.Cells[i + 2, "A"] = check.ElementAt(i).Date;
ws.Cells[i + 2, "B"] = check.ElementAt(i).FirstName;
ws.Cells[i + 2, "C"] = check.ElementAt(i).LastName;
ws.Cells[i + 2, "D"] = check.ElementAt(i).SurName;
ws.Cells[i + 2, "E"] = check.ElementAt(i).City;
ws.Cells[i + 2, "F"] = check.ElementAt(i).Country;
}
wb.SaveAs(path);
}
Насколько я понимаю, List проходит этот путь очень долго, я установил контрольные точки и через 10 секунд было только 1000 записей. Это очень плохо.
Есть ли способы быстро написать в Excel. Могу ли я использовать другую коллекцию? Мне нужно достичь скорости не менее 10-20 секунд, чтобы вставить 1 миллион данных.