none
Automatisches auslesen von Tabellennamen aus Excel-Files RRS feed

  • Frage

  • Hallo,

    ich bin zur Zeit dabei eine Anwendung zu programmieren, welche Daten aus Excel-Files einlesen kann. Dazu muss ich die Namen aller Tabellen auslesen, um diese auslesen zu können. Ich habe mir zum auslesen der Tabellen Namen einen Code aus dem Internet geholt, und diesen umgeschrieben. Jedoch funktioniert dieser nicht so wie ich will:

    Oben habe ich jeweils die strings für die Tabellen Namen deklariert:

    namespace ExcelEinlesen
    {
        public partial class frmHaupt : Form
        {
            public frmHaupt()
            {
                InitializeComponent();
            }
            public string sheetName1;
            public string sheetName2;
            public string sheetName3;
            public string pfad;

    Ich habe mir gedacht das ich folgenden Code so umändern, das die Schleife bei jedem Durchlauf den Tabellen Namen der 1. Tabelle = sheetName1 setzt, im 2. Durchlauf auf sheetName2 usw..

    private string[] GetSheetNames(string excelFile)
            { //https://dotnet-snippets.de/snippet/namen-der-woksheets-einer-excel-datei-auslesen/635
                OleDbConnection msExcel = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + pfad + ";Extended Properties='Excel 12.0 XML;HDR=YES;';");
    
    
                msExcel.Open();
    
                DataTable dtWorksheetNames = msExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
    
                msExcel.Close();
    
                string[] TabellenName = new string[dtWorksheetNames.Rows.Count];
    
                for (int i = 0; i < dtWorksheetNames.Rows.Count; i++)
                {
                    TabellenName[i] = dtWorksheetNames.Rows[i]["Table_Name"].ToString();
                    if (i == 0)
                    {
                        TabellenName[0] = sheetName1;
                    }
                    if (i == 1)
                    {
                        TabellenName[1] = sheetName2;
                    }
                    if (i == 2)
                    {
                        TabellenName[2] = sheetName3;
                    }
                }
                return TabellenName;
                
            }

    Jedoch wenn ich dann nach dem Aufruf dieser Methode im eigentlichen Code mit sheetName1/2 etc arbeiten will, sind diese null ? Wo liegt mein Fehler?

    Danke im Voraus!

    Gruß,

    Felix

    Mittwoch, 19. April 2017 08:55

Antworten

  • Hallo Felix,

    du moechtest bestimmt die Zuweisung tauschen ;-)

    ...
    	if (i == 0)
    	{
    		sheetName1 = TabellenName[0];
    	}
    	if (i == 1)
    	{
    		sheetName2 = TabellenName[1];
    	}
    	if (i == 2)
    	{
    		sheetName3 = TabellenName[2];
    	}
    ...
    

    Gruss

    • Als Antwort vorgeschlagen Florian Haupt Mittwoch, 19. April 2017 09:59
    • Als Antwort markiert Felix24 Mittwoch, 19. April 2017 10:05
    Mittwoch, 19. April 2017 09:38

Alle Antworten

  • Hallo Felix,

    du moechtest bestimmt die Zuweisung tauschen ;-)

    ...
    	if (i == 0)
    	{
    		sheetName1 = TabellenName[0];
    	}
    	if (i == 1)
    	{
    		sheetName2 = TabellenName[1];
    	}
    	if (i == 2)
    	{
    		sheetName3 = TabellenName[2];
    	}
    ...
    

    Gruss

    • Als Antwort vorgeschlagen Florian Haupt Mittwoch, 19. April 2017 09:59
    • Als Antwort markiert Felix24 Mittwoch, 19. April 2017 10:05
    Mittwoch, 19. April 2017 09:38
  • Hallo Risto,

    danke, funktioniert jetzt einwandfrei!

    Gruß,

    Felix

    Mittwoch, 19. April 2017 10:05