Экспорт данных с 1 млн. Записей в CSV - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть таблица данных C #, содержащая около миллиона строк с 20 столбцами. Мне нужно экспортировать ее в csv, я пробовал сборщик строк, но страница продолжает загружаться

 public ActionResult DownloadExcel()
        {   
            System.Data.DataTable result = Helpers.TaxMailingExcelBuilder.Export();

            Response.Clear();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment;filename=myData.csv");
            Response.Charset = "";
            Response.ContentType = @"application/text";
            Response.Output.Write(ExportDataTable(result).ToString());
            Response.Flush();
            Response.End();

            return View();
        }

        private StringBuilder ExportDataTable(System.Data.DataTable dt)
        {           
            var stringBuilder = new StringBuilder();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    stringBuilder.Append(dt.Rows[i][j].ToString() + ',');
                }
                stringBuilder.Append("rn");
            }
            return stringBuilder;
        }
    }

страница продолжает загружаться без какого-либо прогресса

1 Ответ

0 голосов
/ 02 декабря 2018

Я бы вернул StringWriter как код ниже

       private StringWriter ExportDataTable(DataTable dt)
       {
            StringWriter writer = new StringWriter();

            string[] columnNames = dt.Columns.Cast<DataColumn>().Select(x => x.ColumnName).ToArray();
            writer.WriteLine(string.Join(",", columnNames));

            foreach(DataRow row in dt.AsEnumerable())
            {
                writer.WriteLine(string.Join(",", row.ItemArray.Select(x => x.ToString())));
            }
            return writer;

        }
...