我需要帮助: - )
我有一个file.txt,内容如下:
00001 JhonKey 023301923
00002 Hercules 023039910
我想通过datatable将此文件加载到datagridview,结果应该保存在如下的数据网格中:
COL1 | COL2 | COL3
-----------------------------------
00001 | JhonKey | 023301923
00002 | Hercules | 023039910
我正在尝试这段代码:
using (StreamReader SR = new StreamReader(txtFileName))
{
int row = 0;
string line;
while ((line = SR.ReadLine())!= null)
{
string[] Columns = line.Split(',');
dataGridView2.Rows.Add();
for (int i = 0; i < Columns.Length; i++)
{
dataGridView2[i, row].Value = Columns[i];
}
row++;
}
}
但结果与预期不符。看起来不对,第一栏中的所有内容都显示出来,如下所示:
COL1 | COL2 | COL3
--------------------------------------------------------
00001 JhonKey 023301923 | |
00002 Hercules 023039910 | |
答案 0 :(得分:0)
看看行字符串[] Columns = line.Split(','); 您尝试用逗号分隔行,但文件中没有逗号。尝试按空间划分。 喜欢
string[] Columns = line.Split(' ');
或
string[] Columns = line.Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries)
答案 1 :(得分:0)
using System.Data;
using System.IO;
public class FromYourFileToGrid
{
public static DataTable DataTableFromYourTextFile(string directory, char splitter=',')
{
DataTable result;
string[] LineArray = File.ReadAllLines(directory);
result = FormDataTable(LineArray, splitter);
return result;
}
private static DataTable FormDataTable(string []LineArray, char splitter)
{
bool IsHeaderSet = false;
DataTable dt = new DataTable();
AddColumnToTable(LineArray, splitter, ref dt);
AddRowToTable(LineArray, splitter, ref dt);
return dt;
}
private static void AddRowToTable(string []valueCollection, char splitter, ref DataTable dt)
{
for (int i = 1; i < valueCollection.Length; i++)
{
string[] values = valueCollection[i].Split(splitter);
DataRow dr = dt.NewRow();
for (int j = 0; j < values.Length; j++)
{
dr[j] = values[j];
}
dt.Rows.Add(dr);
}
}
private static void AddColumnToTable(string []columnCollection, char splitter, ref DataTable dt)
{
string[] columns = columnCollection[0].Split(splitter);
foreach (string columnName in columns)
{
DataColumn dc = new DataColumn(columnName, typeof(string));
dt.Columns.Add(dc);
}
}
}
您在同一循环中添加了颜色和行。这是创建网格的错误方法。您应该在不同的方法中添加行和颜色。然后类将创建您的网格,然后将coloumn,rows添加到您的网格中。您可以使用以下方法调用类的方法:
dataGridView1.DataSource = FromYourFileToGrid.DataTableFromYourTextFile("file.txt", '|');
然后您的数据将正确添加颜色和行。你应该阅读越来越多的教程。因为在Stackoverflow中询问了这个问题。您可以阅读此Reading from .txt file, then exporting data to DataGridView问题。我希望这段代码可以帮助你。