c # OpenFileDialog, Streamreader, Datatable, пропустить первую строку после открытия следующего файла - PullRequest
0 голосов
/ 19 марта 2019

Извините, я новичок, и я прочитал здесь много тем о 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 голосов
/ 19 марта 2019

... но когда я снова открываю (1), я получаю заголовок csv, показанный в сетке

Очистите таблицу данных и Колонны:

private void btoDateiOeffnen_Click(object sender, EventArgs e)
{
    dt.Clear();
    dt.Columns.Clear();
    // ... rest of the code ...
0 голосов
/ 19 марта 2019
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», поэтому он всегда будет прыгать, когда придет к этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...