我有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
中同一行的新列。< / p>
有没有人知道这么做的简短方法?
答案 0 :(得分:3)
您可以拆分线并循环所有行/列以生成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的DataSource。
答案 1 :(得分:0)
最简单的方法是将文本文件导入DataTable,然后通过DataSource属性将DataTable绑定到DataGridView。
您的文件看起来是固定宽度或分隔数据文件。有很多库可以帮助将这些文件读入DataTable,例如this one在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作为参考。
答案 2 :(得分:0)
您可以使用DataSource和Microsoft文本文件驱动程序。
答案 3 :(得分:0)
像这样上传文件:
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