从文本文件导入数据并在datagrid中显示

时间:2014-11-05 09:45:51

标签: c# .net wpf datagrid

我想从文本文件导入数据并将其显示在数据网格中。文本文件是分隔的。第一行包含列标题,其余包含各列的数据。

文本文件中存在列分隔符和行分隔符。我想在数据网格中显示数据,其中标题将是列名称,所有数据将显示在每列之下。

我已成功从文件中获取数据。问题是文件可能每次都不同,列数可能会有所不同。所以我can not use a predefined class为它。我想create a class for run time and add the properties at run time并将列表显示到数据网格。我该如何完成这项任务?

1 个答案:

答案 0 :(得分:3)

为什么要创建类?您也可以使用以下代码..它将动态生成 DataTable

check here as well..

public class Helper
{
    public static DataTable DataTableFromTextFile(string location, char delimiter = ',')
    {
        DataTable result;

        string[] LineArray = File.ReadAllLines(location);

        result = FormDataTable(LineArray, delimiter);

        return result;
    }

    private static DataTable FormDataTable(string[] LineArray, char delimiter)
    {
        DataTable dt = new DataTable();

        AddColumnToTable(LineArray, delimiter, ref dt);

        AddRowToTable(LineArray, delimiter, ref dt);

        return dt;
    }

    private static void AddRowToTable(string[] valueCollection, char delimiter, ref DataTable dt)
    {

        for (int i = 1; i < valueCollection.Length; i++)
        {
            string[] values = valueCollection[i].Split(delimiter);
            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 delimiter, ref DataTable dt)
    {
        string[] columns = columnCollection[0].Split(delimiter);
        foreach (string columnName in columns)
        {
            DataColumn dc = new DataColumn(columnName, typeof(string));
            dt.Columns.Add(dc);
        }
    }

}

现在将此DataTable显示到您的网格视图,您只需按以下方式调用

dataGridView1.DataSource = Helper.DataTableFromTextFile("Testing.txt");

用于文本文件,如 -

fname, sname, age
deepak, sharma, 23
Gaurav, sharma, 32
Alok, Kumar, 33

因为您没有指定分隔符字符,所以默认情况下它将使用,,否则您必须指定是否还有其他类似

dataGridView1.DataSource = Helper.DataTableFromTextFile("Testing.txt", '|');

用于文本文件,如 -

fname| sname| age
deepak| sharma| 23
Gaurav| sharma| 32
Alok| Kumar| 33

它就像魅力一样,

enter image description here

http://mytactics.blogspot.com/2014/11/show-delimiter-text-file-data-to.html