Сначала вам нужно правильно преобразовать файл в DataTable
.Затем установите DataSource
из DataGridView
для таблицы данных, которую вы загружаете с помощью файла.Установите AllowUserToAddRows
в true и затем сохраните DataTable
обратно в файл.
Пример
Допустим, вот содержимое файла:
Column1;Column2
a1;b1
a2;b2
a3;b3
И мы ожидаем показать их в DataGridView
, как показано ниже:
| Column1 | Column2 |
|=============|============|
|a1 |b1 |
|-------------|------------|
|a2 |b2 |
|-------------|------------|
|a3 |b3 |
|-------------|------------|
| | |
|-------------|------------|
Вы можете просто загрузить и сохранить данные, используя следующий код:
DataTable dt;
string fileName = @"d:\file1.txt";
private void Form1_Load(object sender, EventArgs e)
{
dt = LoadFile(fileName);
this.dataGridView1.DataSource = dt;
}
private void SaveButton_Click(object sender, EventArgs e)
{
SaveFile(dt, fileName);
}
LoadFile
DataTable LoadFile(string fileName)
{
var dt = new DataTable();
var lines = System.IO.File.ReadAllLines(fileName);
if (lines.Count() == 0)
return dt;
lines.First().Split(';').ToList().ForEach(x =>
{
dt.Columns.Add(new DataColumn(x));
});
lines.Skip(1).ToList().ForEach(x =>
{
dt.Rows.Add(x.Split(';'));
});
return dt;
}
SaveFile
public void SaveFile(DataTable dt, string fileName)
{
var list = new List<IEnumerable<string>>();
list.Add(dt.Columns.Cast<DataColumn>().Select(x => x.ColumnName));
list.AddRange(dt.Rows.Cast<DataRow>().Select(x => x.ItemArray.Cast<string>()));
var lines = list.Select(x => string.Join(";", x));
System.IO.File.WriteAllLines(fileName, lines);
}