Putting a.txt файл в DataGridView

у меня есть openFileButton при нажатии откроется файл, который выглядит следующим образом:

RefDeg  Part#       Xcntr    Ycntr    Rot  PkgStyle  
U6      IC-00279G   33.411   191.494  0    QFP32     
U1      IC-00272G   38.011   200.644  90   BGA177    
U5      IC-00273G   46.311   179.494  0    QFP40     
R54     EXCLUDES    36.411   173.694  0    0402_2    
R71     EXCLUDES    38.236   186.994  0    0402_2    
R39     EXCLUDES    38.861   188.544  90   0402_2    
C23     CAP-00130G  37.911   178.854  90   0402_3    
C88     CAP-00010G  52.036   179.019  0    0603_4    
C89     CAP-00010G  43.561   173.744  90   0603_3    
X1      XTL-00013G  49.211   204.819  0    Crystal   
X2      XTL-00012G  53.061   183.469  0    Crystal   
D1      LED-00011G  58.611   181.394  0    LED       
U10     IC-00198G   56.661   205.744  0    SOT       
        IC-00173G   59.911   205.744  0    SOT23-5   
U2      IC-00274G   51.786   199.044  0    VFBGA     
Q1      Excludes    43.147   189.769  0    MOSFET    
U4      IC-00167G   59.211   177.394  0    SOT235_2  
FID1    FIDUCIAL    5.080    24.130   0    FIDUCIAL  
        FIDUCIAL    59.586   192.944  0    FIDUCIAL  

когда файл выбран и открыт, я хотел бы поставить / импортировать .txt файлы строка в DataGridView а затем каждый столбец в новый столбец в той же строке в DataGridView.

кто-нибудь знает быстрый короткий способ сделать это?

4 ответов


вы можете разделить строки и зациклить все строки / столбцы для создания DataTable:

var fileName = this.OpenFileDialog1.FileName;
var rows = System.IO.File.ReadAllLines(fileName);
Char[] separator = new Char [] {' '};
DataTable tbl = new DataTable(fileName);
if (rows.Length != 0) {
    foreach (string headerCol in rows(0).Split(separator)) {
        tbl.Columns.Add(new DataColumn(headerCol));
    }
    if (rows.Length > 1) {
        for (rowIndex = 1; rowIndex < rows.Length; rowIndex++) {
            var newRow = tbl.NewRow();
            var cols = rows(rowIndex).Split(separator);
            for (colIndex = 0; colIndex < cols.Length; colIndex++) {
                newRow(colIndex) = cols(colIndex);
            }
            tbl.Rows.Add(newRow);
        }
    }
}

затем используйте этот DataTable в качестве источника данных для вашего DataGridView.


вы можете использовать источник данных и драйвер текстового файла Microsoft.

http://www.connectionstrings.com/textfile

http://www.codeproject.com/KB/database/ReadTextFile.aspx


загрузите файл следующим образом:

    private static DataTable OpenTextFile()
    {
#if X86 // 32-bit
        string _connectionStringTemplate = "Driver={{Microsoft Text Driver (*.txt; *.csv)}};Extensions=asc,csv,tab,txt;Persist Security Info=False;Dbq={0}";
#else // 64-bit
        string _connectionStringTemplate = "Driver={{Microsoft Access Text Driver (*.txt, *.csv)}};Dbq={0};Extensions=asc,csv,tab,txt";
#endif

            string connectionString = string.Format(_connectionStringTemplate, @"C:\Temp\");

            using (OdbcConnection connection = new OdbcConnection(connectionString))
            {
                string selectAll = string.Format("select * from [{0}]", Path.GetFileName("test.txt"));

                using (OdbcCommand command = new OdbcCommand(selectAll, connection))
                {
                    connection.Open();

                    DataTable dataTable = new DataTable("txt");

                    using (OdbcDataAdapter adapter = new OdbcDataAdapter(selectAll, connection))
                    {
                        //Fills dataset with the records from file
                        adapter.Fill(dataTable);

                        return dataTable;
                    }
                }
            }
        }

затем просто свяжите DataTable с вашим DataGridView


самый простой способ-импортировать текстовый файл в DataTable, а затем привязать DataTable к DataGridView через свойство DataSource.

файл выглядит как фиксированная ширина или разделенный файл данных. Существует множество библиотек, которые помогут прочитать такие файлы в DataTable, например этот на codeproject.com приходит на ум.

вот как вы это сделаете с GenericParser, который я связал выше:

// DataFilePath stores the path + file name of your data file.
using (var p = new GenericParsing.GenericParserAdapter(DataFilePath)) {        
    // Assumes your data file is fixed width, with the column widths given in the array.
    p.ColumnWidths = new int[] { 8, 12, 9, 9, 5, 11 };
    p.FirstRowHasHeader = true;
    DataTable dt = p.GetDataTable();

    dataGridView1.DataSource = dt;
}

Примечание. что вам нужно добавить GenericParsing.DLL в качестве ссылки в проекте.