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

问题描述 投票:0回答:2

抱歉,我是初学者,我已经在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;                    
            }
        }
    }
c# datatable streamreader
2个回答
0
投票

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

清除DataTable和列:

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

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”,所以当他来到这里时他总会跳。

© www.soinside.com 2019 - 2024. All rights reserved.