Прочтите CSV-файл в массив в C#

Следующий метод LoadCsv считывает CSV-файл в двумерный массив строк.

// Загрузите CSV-файл в массив строк и столбцов.
// Предположим, что могут быть пустые строки, но каждая строка имеет
// столько же полей.
private string[,] LoadCsv(string filename)
{
    // Получить текст файла.
    string whole_file = System.IO.File.ReadAllText(filename);

    // Разделение на строки.
    whole_file = whole_file.Replace('\n', '\r');
    string[] lines = whole_file.Split(new char[] { '\r' },
        StringSplitOptions.RemoveEmptyEntries);

    // Посмотрим, сколько строк и столбцов есть.
    int num_rows = lines.Length;
    int num_cols = lines[0].Split(',').Length;

    // Выделите массив данных.
    string[,] values = new string[num_rows, num_cols];

    // Загрузите массив.
    for (int r = 0; r < num_rows; r++)
    {
        string[] line_r = lines[r].Split(',');
        for (int c = 0; c < num_cols; c++)
        {
            values[r, c] = line_r[c];
        }
    }

    // Возвращаем значения.
    return values;
}

В коде используется System.IO.File.ReadAllText, чтобы прочитать содержимое файла в строке. Затем он использует Split, чтобы разбить файл на строки, игнорируя любые пустые строки.

Затем код перебирает строки, используя Split, чтобы разделить строки на поля и добавить их значения в массив. Когда это будет сделано, метод вернет двумерный массив строк.

Когда вы нажимаете кнопку Go, следующий код вызывает метод LoadCsv и отображает результат в элементе управления DataGridView.

// Прочитайте файл CSV.
// Предполагается, что каждая строка имеет одинаковое количество полей
// и строка не заполнена.
private void btnGo_Click(object sender, EventArgs e)
{
    // Получить данные.
    string[,] values = LoadCsv(txtFile.Text);
    int num_rows = values.GetUpperBound(0) + 1;
    int num_cols = values.GetUpperBound(1) + 1;

    // Показывать данные, чтобы показать, что у нас это есть.

    // Создаем заголовки столбцов.
    // Для этого примера предположим, что первая строка
    // содержит имена столбцов.
    dgvValues.Columns.Clear();
    for (int c = 0; c < num_cols; c++)
        dgvValues.Columns.Add(values[0, c], values[0, c]);

    // Добавьте данные.
    for (int r = 1; r < num_rows; r++)
    {
        dgvValues.Rows.Add();
        for (int c = 0; c < num_cols; c++)
        {
            dgvValues.Rows[r - 1].Cells[c].Value = values[r, c];
        }
    }
}

Этот код вызывает LoadCsv и сохраняет возвращаемые строки в массиве. Он использует метод массива GetUpperBound дважды, чтобы узнать, сколько строк и столбцов оно содержит.

Затем программа очищает столбцы элемента управления DataGridView. Он перебирает первые значения в каждом столбце массива и использует его для построения столбца в DataGridView. Для каждого значения он создает столбец с именем после значения и отображает его как текст заголовка.

Источник: http://csharphelper.com/blog/2014/11/read-a-csv-file-into-an-array-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Adblock
detector