在这里,我需要在datagridview中读取/加载文本(* .txt)文件值。这是我需要加载的示例文本文件。
S.NO Data1 Data2 Data3 Data4 Data5 Data6 Data7 Data8 Data9 Data10
1 8.3 2 9.1 3 7.5 1 25 1.5 22 1.7
2 5.6 4 8.2 6 8.6 3 26 2.5 23 2.3
3 8.7 6 7.3 9 9.3 5 28 3.5 26 3.7
4 2.9 8 6.4 12 4.9 7 12 4.5 24 4.3
5 4.6 10 5.5 15 5.7 9 25 5.5 25 5.3
任何人都可以介绍如何将这些文本文件值加载到我的datagridview单元格,那些标题如data1,data2,..... data10必须加载到列标题中,剩余的行值应该根据他们的数据加载到datagridview的单独单元格中列标题。
提前致谢。
答案 0 :(得分:5)
试试这个..
System.IO.StreamReader file = new System.IO.StreamReader("yourfile.txt");
string[] columnnames = file.ReadLine().Split(' ');
DataTable dt = new DataTable();
foreach (string c in columnnames)
{
dt.Columns.Add(c);
}
string newline;
while ((newline = file.ReadLine()) != null)
{
DataRow dr = dt.NewRow();
string[] values = newline.Split(' ');
for (int i = 0; i < values.Length; i++)
{
dr[i] = values[i];
}
dt.Rows.Add(dr);
}
file.Close();
dataGridView1.DataSource = dt;
不要气馁,但这不是在SO上提出问题的正确方法。请先熟悉自己。
答案 1 :(得分:3)
一种方法是:
var lines = File.ReadAllLines("input.txt");
if (lines.Count() > 0)
{
foreach (var columnName in lines.FirstOrDefault()
.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))
{
dataGridView1.Columns.Add(columnName, columnName);
}
foreach (var cellValues in lines.Skip(1))
{
var cellArray = cellValues
.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (cellArray.Length == dataGridView1.Columns.Count)
dataGridView1.Rows.Add(cellArray);
}
}
当然,这适用于您提供的示例输入文件。对该格式的任何变化都需要进一步验证并增加代码复杂性。
答案 2 :(得分:1)
this.Size = new Size(750, 450);
data.Size = new Size(700, 200);
data.Location = new Point(5, 40);
string[] raw_text = System.IO.File.ReadAllLines("Etudiant.txt");
string[] data_col = null;
int x = 0;
foreach (string text_line in raw_text) {
//MessageBox.Show(text_line);
data_col = text_line.Split('|');
if (x == 0){
//header
for (int i=0; i <= data_col.Length - 1; i++) {
table.Columns.Add(data_col[i]);
}
x++;
}
else {
//data
table.Rows.Add(data_col);
}
}
data.DataSource = table;
this.Controls.Add(data);