Insert a .txt file into a DataGridView

I have openFileButton which, when clicked, will open a file that looks like this:

 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 

When the file is selected and opened, I would like to put / import a row of .txt files into the DataGridView , and then each column into a new column of the same row in the DataGridView .

Does anyone know a quick short way to do this?

+6
source share
4 answers

You can split rows and encode all rows / columns to create a 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); } } } 

Then use this DataTable as a DataSource for your DataGridView.

+3
source

The easiest way is to import the text file into a DataTable and then bind the DataTable to the DataGridView using the DataSource property.

The file looks like a fixed or limited data file. There are many libraries that would help to read such files in a DataTable, for example, this one on codeproject.com comes to mind.

Here's how you do it with the GenericParser described above:

 // 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; } 

Please note that you need to add GenericParsing.dll as a link in your project.

0
source

Download the file as follows:

  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; } } } } 

Then just bind the DataTable to the DataGridView

0
source

Source: https://habr.com/ru/post/895256/


All Articles