Прочтите 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. Для каждого значения он создает столбец с именем после значения и отображает его как текст заголовка.