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.
загрузите файл следующим образом:
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 в качестве ссылки в проекте.