c# OpenFileDialog, Streamreader, Datatable, 打开下一个文件后跳过第一行
c# OpenFileDialog, Streamreader, Datatable, skip first line after open next file
抱歉,我是初学者,我在 Whosebug 上阅读了很多主题,但我没有得出适合我的结果...
在我的代码中,我打开一个文件对话框以打开 csv-file。
我的 (1)csv-file 有一个 header 包含,另一个 (2)csv-file 没有 header.
ProgrammStart:当我打开 (1) 时,datagridview(dgv) 中的一切正常,但是当我再次打开 (1) 时,我得到了网格中显示的 csv 的 header 行。 :程序关闭
ProgrammStart:当我打开 (2) 时,第一行丢失...当我再次打开 (2) 时,一切正常。 :程序关闭
也许有人可以如此友好并告诉我我能做什么因为我尝试了很多很多例子但是 none 得到了想要的结果。
private void btoDateiOeffnen_Click(object sender, EventArgs e)
{
dt.Clear();
if (oFDcsv.ShowDialog() == DialogResult.OK)
{
using (StreamReader sr = new StreamReader(oFDcsv.FileName, Encoding.UTF8))
{
// bis Dateiende lesen
while (!sr.EndOfStream)
{
// Zeile einlesen und anhand des Trennzeichens ";" in einzelne Spalten (stringarray) splitten
string[] currentline = sr.ReadLine().Replace(",",".").Split(new string[] { ";" }, StringSplitOptions.None);
// wenn neue Tabelle (noch keine Spalten enthalten)
if (dt.Columns.Count == 0)
{
// n Spalten der ersten gelesenen Zeile hinzufügen
// als Spaltenüberschrift aufsteigende Zahlen beginnend mit 1
for (int i = 0; i < currentline.Length; i++)
{
dt.Columns.Add(Convert.ToString(i + 1));
//dt.Columns.Add(currentline[i]);
}
}
else
{
dt.Rows.Add(currentline);
}
}
sr.Close();
}
// DataGridView befüllen
dgvDateiAnsicht.DataSource = dt;
// DataGridView dritte Spalte ausblenden
dgvDateiAnsicht.Columns[2].Visible = false;
// DataGridView Spalten sortieren unterbinden
foreach (DataGridViewColumn column in dgvDateiAnsicht.Columns)
{
column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
}
}
for (int i = 0; i < currentline.Length; i++)
{
dt.Columns.Add(Convert.ToString(i + 1)); // here is the problem
//dt.Columns.Add(currentline[i]);
}
不确定,但我认为问题在于此。你会一直跳过“0”,所以他会一直跳到这里。
... but when i open (1) again, then i got the headerline of the csv shown
in the grid
清除数据表和列:
private void btoDateiOeffnen_Click(object sender, EventArgs e)
{
dt.Clear();
dt.Columns.Clear();
// ... rest of the code ...
抱歉,我是初学者,我在 Whosebug 上阅读了很多主题,但我没有得出适合我的结果... 在我的代码中,我打开一个文件对话框以打开 csv-file。 我的 (1)csv-file 有一个 header 包含,另一个 (2)csv-file 没有 header.
ProgrammStart:当我打开 (1) 时,datagridview(dgv) 中的一切正常,但是当我再次打开 (1) 时,我得到了网格中显示的 csv 的 header 行。 :程序关闭
ProgrammStart:当我打开 (2) 时,第一行丢失...当我再次打开 (2) 时,一切正常。 :程序关闭
也许有人可以如此友好并告诉我我能做什么因为我尝试了很多很多例子但是 none 得到了想要的结果。
private void btoDateiOeffnen_Click(object sender, EventArgs e)
{
dt.Clear();
if (oFDcsv.ShowDialog() == DialogResult.OK)
{
using (StreamReader sr = new StreamReader(oFDcsv.FileName, Encoding.UTF8))
{
// bis Dateiende lesen
while (!sr.EndOfStream)
{
// Zeile einlesen und anhand des Trennzeichens ";" in einzelne Spalten (stringarray) splitten
string[] currentline = sr.ReadLine().Replace(",",".").Split(new string[] { ";" }, StringSplitOptions.None);
// wenn neue Tabelle (noch keine Spalten enthalten)
if (dt.Columns.Count == 0)
{
// n Spalten der ersten gelesenen Zeile hinzufügen
// als Spaltenüberschrift aufsteigende Zahlen beginnend mit 1
for (int i = 0; i < currentline.Length; i++)
{
dt.Columns.Add(Convert.ToString(i + 1));
//dt.Columns.Add(currentline[i]);
}
}
else
{
dt.Rows.Add(currentline);
}
}
sr.Close();
}
// DataGridView befüllen
dgvDateiAnsicht.DataSource = dt;
// DataGridView dritte Spalte ausblenden
dgvDateiAnsicht.Columns[2].Visible = false;
// DataGridView Spalten sortieren unterbinden
foreach (DataGridViewColumn column in dgvDateiAnsicht.Columns)
{
column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
}
}
for (int i = 0; i < currentline.Length; i++)
{
dt.Columns.Add(Convert.ToString(i + 1)); // here is the problem
//dt.Columns.Add(currentline[i]);
}
不确定,但我认为问题在于此。你会一直跳过“0”,所以他会一直跳到这里。
... but when i open (1) again, then i got the headerline of the csv shown in the grid
清除数据表和列:
private void btoDateiOeffnen_Click(object sender, EventArgs e)
{
dt.Clear();
dt.Columns.Clear();
// ... rest of the code ...