Проблема не будет решена с помощью EntityFramework, так как, боюсь, вы сосредоточены не на той области. Основная причина этой задержки заключается в том, что вы пытаетесь получить доступ к объекту листа для каждой записи в dt.Rows
.
Я рекомендую использовать GemBox.Spreadsheet для этой цели. Вы можете напрямую прикрепить данные к рабочему листу. Кроме того, вам не нужно явно преобразовывать значения в строку.
----------
// Code sample.
private void Download()
{
DataTable datatable=yourDatatable;// callStore Procedure to fetch DataTable
ExcelFile csvFile = new ExcelFile();//GemBox.Spreadsheet ExcelFile
ExcelWorksheet ws = csvFile.Worksheets.Add("YourWorkSheetName");
if (ws != null)
{
ws.InsertDataTable(datatable, 0, 0, true);
// Use MemoryStream to save or to send it to client as response.
}
}
----------