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