c#OpenFileDialog,Streamreader,Datatable,打开下一个文件后跳过第一行

时间:2019-03-19 11:42:55

标签: c# datatable streamreader

对不起,我是一个初学者,我在这里阅读了很多关于stackoverflow的话题,但是我没有得到关于我的结果... 在我的代码中,我打开一个文件对话框以打开一个csv文件。 我的(1)csv文件具有标头includet,另一个(2)csv文件没有标头。

ProgrammStart:当我打开(1)时,datagridview(dgv)一切正常,但是当我再次打开(1)时,我得到了网格中显示的csv的标题行。 :ProgrammClose

ProgrammStart:当我打开(2)时,缺少第一行...当我再次打开(2)时,一切都很好。 :ProgrammClose

也许有人可以这么友善并向我展示我可以做些什么,因为我尝试了很多例子,但都没有得到想要的结果。

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

2 个答案:

答案 0 :(得分:0)

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”,因此他总是会跳过。

答案 1 :(得分:0)

  

...但是当我再次打开(1)时,我得到了显示的csv的标题行   在网格中

清除数据表列:

private void btoDateiOeffnen_Click(object sender, EventArgs e)
{
    dt.Clear();
    dt.Columns.Clear();
    // ... rest of the code ...