Импорт данных из текстового файла и отображение в сетке данных

1

Я хочу импортировать данные из текстового файла и отображать его в сетке данных. Текстовый файл разделен. Первая строка содержит заголовки столбцов, а остальная часть содержит данные для соответствующих столбцов.

В текстовом файле присутствуют разделители столбцов и разделители строк. Я хочу отобразить данные в сетке данных, в которой заголовок будет именем столбца, и все данные будут отображаться под каждым столбцом.

Я успешно взял данные из файла. Проблема в том, что файл может отличаться для каждого времени, а количество столбцов может отличаться. Поэтому я can not use a predefined class для него. Я хотел create a class for run time and add the properties at run time и отобразить список в сетку данных. Как я могу выполнить эту задачу?

  • 1
    Может быть, это вам поможет - stackoverflow.com/questions/16498614/…
  • 0
    Возможно, вам придется использовать Dynamic справку в C # Что такое разделители в текстовом файле?
Теги:
wpf
datagrid

1 ответ

3

почему вы хотите создать класс? вы также можете использовать приведенный ниже код.. он будет динамически создавать DataTable

проверьте здесь также..

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

он работает как шарм,

Изображение 174551

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню