Как отобразить таблицу данных в консоли c #?

#c#

#c#

Вопрос:

Я создал простую программу для чтения из текстового файла для загрузки данных DataTable . Но как я могу отобразить DataTable информацию в консоли? Console.Write / Console.WriteLine не принимает DataTable в качестве параметра?

 using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CompareLinuxWithWindow
{
    class Program
    {
        static void Main(string[] args)
        {

            ConvertToDataTable(@"C:UsersmanchunlDesktopSample.txt", 10);

            Console.WriteLine();
            Console.WriteLine("Press enter to exit.");
            Console.Read();
        }

        public static DataTable ConvertToDataTable(string filePath, int numberOfColumns)
        {
            DataTable tbl = new DataTable();

            for (int col = 0; col < numberOfColumns; col  )
                tbl.Columns.Add(new DataColumn("Column"   (col   1).ToString()));


            string[] lines = System.IO.File.ReadAllLines(filePath);

            foreach (string line in lines)
            {
                var cols = line.Split(',');

                DataRow dr = tbl.NewRow();
                for (int cIndex = 0; cIndex < 10; cIndex  )
                {
                    dr[cIndex] = cols[cIndex];
                }

                tbl.Rows.Add(dr);

            }

            return tbl;
        }
    }
}
  

Комментарии:

1. Используйте следующее: foreach (строка DataRow в dt. AsEnumerable()) { Консоль. Строка записи (string. Join(«,», строка. itemArray. Выберите(x => x.toString()))); }

2. Во-первых, вы анализируете файл (исправно) и отбрасываете результат в Main . Сохраните ее в переменной и повторяйте строку за строкой и столбец за столбцом, применяя любое форматирование, которое вы можете пожелать.

3. @jdweng Код, который я должен применить внутри main или ConvertToDataTable? Я новичок в C # : (

4. Вы должны изменить первый список на: DataTable dt = ConvertToDataTable(@»C:UsersmanchunlDesktopSample.txt «, 10); В вашем текущем коде таблица определена только локально внутри ConvertToTable. Как только вы измените код, вы можете поместить мой цикл в любое место.

5. Уже могу. Но на самом деле любое другое преобразование текстового файла в DataTable сравнивается с прямой линией записи для текстового файла. Оба контекста текстового файла предполагают, что это sometext1, sometext2, sometext3, sometext4, sometext5, sometext6, sometext7, sometext8, sometext9, sometext10

Ответ №1:

Вы почти на месте. Пожалуйста, попробуйте это

 using System;
using System.Data;

namespace CompareLinuxWithWindow
{
    class Program
    {
    static void Main(string[] args)
    {

        DataTable dt= ConvertToDataTable(@"C:UsersmanchunlDesktopSample.txt", 10);
        DataTable dt2= ConvertToDataTable(@"C:UsersmanchunlDesktopSample.txt2", 10);

        //Add these lines
        for(int i=0;i<dt.Rows.Count;i  ) //looping through all rows including the column. change `i=1` if need to exclude the columns display
        {
            for (int j = 0; j < dt.Columns.Count; j  ) //looping through all columns
            {
                Console.WriteLine(dt.Rows[i][j]); //display of the data
            }
        }
        //End of change

        //Added for 2nd txt file
       for(int i=0;i<dt2.Rows.Count;i  ) //looping through all rows including the column. change `i=1` if need to exclude the columns display
        {
            for (int j = 0; j < dt2.Columns.Count; j  ) //looping through all columns
            {
                Console.WriteLine(dt2.Rows[i][j]); //display of the data
            }
        }
       //End :: Added for 2nd txt file
        Console.WriteLine("Press enter to exit.");
        Console.Read();
    }

    public static DataTable ConvertToDataTable(string filePath, int numberOfColumns)
    {
        DataTable tbl = new DataTable();

        for (int col = 0; col < numberOfColumns; col  )
            tbl.Columns.Add(new DataColumn("Column"   (col   1).ToString()));


        string[] lines = System.IO.File.ReadAllLines(filePath);

        foreach (string line in lines)
        {
            var cols = line.Split(',');

            DataRow dr = tbl.NewRow();
            for (int cIndex = 0; cIndex < numberOfColumns; cIndex  )//changed hardcoded value of 10 to numberOfColumns
            {
                dr[cIndex] = cols[cIndex];
            }

            tbl.Rows.Add(dr);

        }

        return tbl;
    }
}
}
  

Пожалуйста, дайте мне знать, если это поможет.

Комментарии:

1. Это работает, но могу ли я загрузить из 2 текстовых файлов. Потому что это показывает, что она использовалась другим процессом. Когда я читаю из этой таблицы данных dt2= ConvertToDataTable (@»C:UsersmanchunlDesktopSample2.txt «, 10);

2. @apple, я создал DataTable dt2= ConvertToDataTable(@"C:UsersmanchunlDesktopSample2.txt", 10); . У меня это работает. Пожалуйста, объясните более подробно

3. Я прочитал файл 2txt, поместив его следующим образом.. DataTable dt= ConvertToDataTable(@»C:UsersmanchunlDesktopSample1.txt «, 10); DataTable dt2= ConvertToDataTable(@»C:UsersmanchunlDesktopSample2.txt «, 10); но как только я выполняю это в строке string[] lines = System.IO.File. ReadAllLines(путь к файлу); Он показывает мне сообщение об ошибке System.IO.IOException: «Процесс не может получить доступ к файлу»C:UsersmanchunlDesktopSampel1.txt ‘ потому что он используется другим процессом.’

4. Я обновил ответ, он работает для меня. Пожалуйста, попробуйте и дайте мне знать.

5. По-прежнему отображается сообщение об ошибке в строке string[] lines = System.IO.File. Строки чтения (путь к файлу); Исключение System.IO.IOException: «Процесс не может получить доступ к файлу»C:UsersmanchunlDesktopSample2.txt ‘ потому что он используется другим процессом.’