Приложение C # Windows экспортирует данные в формате .csv - PullRequest
0 голосов
/ 10 мая 2018

Я хочу экспортировать datatable в .csv файл.

Вот то, что я пытался, но это занимает слишком много времени:

string strFilePath= @"C:\myCSVfile.csv";

-

public void CreateCSVFile(DataTable dtDataTablesList, string strFilePath)

{
    // Create the CSV file to which grid data will be exported.

    StreamWriter sw = new StreamWriter(strFilePath, false);

    //First we will write the headers.

    int iColCount = dtDataTablesList.Columns.Count;

    for (int i = 0; i < iColCount; i++)
    {
        sw.Write(dtDataTablesList.Columns[i]);
        if (i < iColCount - 1)
        {
            sw.Write(",");
        }
    }
    sw.Write(sw.NewLine);

    // Now write all the rows.

    foreach (DataRow dr in dtDataTablesList.Rows)
    {
        for (int i = 0; i < iColCount; i++)
        {
            if (!Convert.IsDBNull(dr[i]))
            {
                sw.Write(dr[i].ToString());
            }
            if (i < iColCount - 1)

            {
                sw.Write(",");
            }
        }
        sw.Write(sw.NewLine);
    }
    sw.Close();
}

Есть ли какой-нибудь другой способ сделать это быстрее?

Заранее благодарю за любые предложения.

1 Ответ

0 голосов
/ 10 мая 2018

Теперь быстрее, и вот что я сделал:

  1. Я посчитал количество процессоров
  2. Создать тему для каждого
  3. Разделить строки по потокам
  4. У каждого экспорта в свой файл
  5. Объединить файлы в конце
  6. Добавить хороший индикатор прогресса
...