none
There is no argument given that corresponds to the required formal parameter 'excelFile' of 'frm.Haupt.GetSheetNames(string) ? RRS feed

  • Frage

  • Guten Morgen,

    ich bin zur Zeit dabei eine Anwendung zu programmieren, welche Daten aus Excel-Files einlesen kann. Dazu muss ich aber automatisch die Namen der Tabellen des Excel Files auslesen können, ohne diese im Code anzugeben. Dazu habe ich diese Methode im Internet gefunden:

    private string[] GetSheetNames(string excelFile)  
            {
                OleDbConnection msExcel = new OleDbConnection("Data Source=" + pfad + ";Provider=Microsoft.Jet.OLEDB.4.0" + ";Extended Properties=Excel 8.0");
                
    
                msExcel.Open();
    
                DataTable dt = msExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
    
                msExcel.Close();
    
                string[] TabellenName = new string[dt.Rows.Count];
    
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TabellenName[i] = dt.Rows[i]["Table_Name"].ToString();
                }
                return TabellenName;
    
            }

    jedoch bekomme ich immer die im Titel genannte Fehlermeldung, wenn ich die Methode dann in meinem Code beim einlesen anwende. Kann mir da eventuell jemand helfen, woran das liegt? Habe schon mal gegoogelt, und dann statt

    private string[] GetSheetNames(string excelFile)
    
    

    das versucht:

    private string[] GetSheetNames(string excelFile) : base(excelFile)

    funktioniert leider trotzdem nicht.

    Hoffe mir kann da jemand helfen.

    Danke im Voraus!

    Grüße,

    Felix

    Mittwoch, 19. April 2017 07:37

Antworten

  • Hallo Felix,

    wo rufst Du die Methode "GetSheetNames" denn auf? Die Fehlermeldung besagt, dass Du für den Parameter excelFile keinen Wert übergibst. Also bspw. so:

    GetSheetNames();

    anstelle von:

    GetSheetNames( "abc.xls" );


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Felix24 Mittwoch, 19. April 2017 08:21
    Mittwoch, 19. April 2017 07:45
    Moderator
  • Hallo Felix,

    wie schon geschrieben: Deine Methode GetSheetNames erwartet die Übergabe eines String für den Parameter excelFile. Daher kannst Du die Methode nicht einfach ohne diesen Übergabewert aufrufen, sondern musst das wie folgt machen:

    GetSheetNames( "X:\Ordner\abc.xls" );

    Woher soll der Code in der Methode sonst wissen, welche Exceldatei verwendet werden soll?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Felix24 Mittwoch, 19. April 2017 08:21
    Mittwoch, 19. April 2017 07:57
    Moderator

Alle Antworten

  • Hallo Felix,

    wo rufst Du die Methode "GetSheetNames" denn auf? Die Fehlermeldung besagt, dass Du für den Parameter excelFile keinen Wert übergibst. Also bspw. so:

    GetSheetNames();

    anstelle von:

    GetSheetNames( "abc.xls" );


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Felix24 Mittwoch, 19. April 2017 08:21
    Mittwoch, 19. April 2017 07:45
    Moderator
  • Hallo Stefan,

    ich wollte die Methode aufrufen, bevor ich die Tabellen auslese, so dass ich durch die Methode die strings für die sheetNames generieren lassen kann. Natürlich muss ich da noch was anpassen damit das funktioniert, jedoch geht es mir erst einmal nur darum, warum ich die Methode nicht aufrufen kann.

    Habe es so versucht:

    GetSheetNames(); //Hier habe ich versucht die Methode aufzurufen
    
                        OleDbDataAdapter da = new OleDbDataAdapter("Select * From [" + sheetName1 + "$]", msExcel); //OleDbDataAdapter instanziieren
    
                        da.Fill(ds, sheetName1);
                        da.SelectCommand.CommandText = "SELECT * FROM [" + sheetName2 + "$]";
                        da.Fill(ds, sheetName2);
                        da.SelectCommand.CommandText = "SELECT * FROM [" + sheetName3 + "$]";
                        da.Fill(ds, sheetName3);
                        //da.SelectCommand.CommandText = "SELECT * FROM [" + sheetName4 + "$]";
                        //da.Fill(ds, sheetName4);
                        //da.Fill(dt);//Data-Table füllen
                        //ds.Tables[0].Merge(ds.Tables[1]);
                        //ds.Tables[0].Merge(ds.Tables[2]);
    
    
                        dgvDaten1.DataSource = ds.Tables[0];//Datenquelle für das DataGridView angeben 
                        dgvDaten2.DataSource = ds.Tables[1];
                        dgvDaten3.DataSource = ds.Tables[2];

    Muss in die Klammer der Pfad, von der Datei die ich auslesen will?

    Gruß,

    Felix



    • Bearbeitet Felix24 Mittwoch, 19. April 2017 07:56
    Mittwoch, 19. April 2017 07:54
  • Hallo Felix,

    wie schon geschrieben: Deine Methode GetSheetNames erwartet die Übergabe eines String für den Parameter excelFile. Daher kannst Du die Methode nicht einfach ohne diesen Übergabewert aufrufen, sondern musst das wie folgt machen:

    GetSheetNames( "X:\Ordner\abc.xls" );

    Woher soll der Code in der Methode sonst wissen, welche Exceldatei verwendet werden soll?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Felix24 Mittwoch, 19. April 2017 08:21
    Mittwoch, 19. April 2017 07:57
    Moderator