Announcement

Collapse
No announcement yet.

Exel datei in SQL Server importieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Exel datei in SQL Server importieren

    Guten Tag zusammen,
    Ich möchte mit VS 2012 (C#) daten aus Excel-Datei in einer Sql-Tabelle importieren. hier den code.
    Code:
     OleDbConnection excelConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Projekte\\NCCworkshop\\Employee.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\"");
                    Console.WriteLine(excelConnection);      
                    excelConnection.Open();
                    string query = "SELECT * FROM [Employee$]";
                    OleDbCommand cmd = new OleDbCommand(query, excelConnection);
                    OleDbDataReader dReader = cmd.ExecuteReader(); // diese Zeile führt zur Fehler 
    	
    	
    	
    
    
    Code:
    'Employee$' ist kein gültiger Name. Stellen Sie sicher, dass der Name nicht zu lang ist und keine ungültigen Zeichen oder Interpunktionszeichen enthält.
    Fehlermeldung
    Code:
    'Employee$' ist kein gültiger Name. Stellen Sie sicher, dass der Name nicht zu lang ist und keine ungültigen Zeichen oder Interpunktionszeichen enthält.
    Employee ist der Name meine Excel-Tabelle hier den Link zum download
    HTML Code:
    http://www.file-upload.net/download-11527143/Employee.xlsx.html
    Warum kann ich den Parameter Command nicht lesen?
    Kann jemand mir Helfen?
    Danke im voraus für eure Hilfe
    MfG

  • #2
    Employee ist der Name meine Excel-Tabelle hier den Link zum download
    Dein Sheet in Excel heißt Employee?

    Comment


    • #3
      Also exakt kann ich es nicht beantworten, ist länger her, dass ich das mal gemacht habe.
      Damals hatte ich ähnliche Problem. Ursache ist, dass der Name technisch nicht immer so lautet, wie er dargestellt wird. Z.B. wenn ein Sheet umbenannt, verschoben oder was auch immer wird. Es gibt da glaub ich interne Namen, die immer gleich bleiben und die dargestellten, die beliebig geändert werden können.
      Dazu gibt's sicher irgendwo Doku. Du kannst aber auch ein wenig rumprobieren.
      - Neues Sheet anlegen, daten eintippen, speichern und dann unter dem Originalname darauf zugreifen.
      - ADO bietet die Möglichkeit, die vorhandenen Tabellennamen abzurufen/ aufzulisten, dafür müsste eine es reichen, die Datenquelle in der IDE zu öffnen.
      - Ich bin mir nicht sicher, ob die $ Notation auch für Deinen Provider gilt. Ich habe das damals mit Jet Engine gemacht.
      - Alternativ zum Sheetnamen mit $ Notation (oder wie auch immer), kann man auch benannte Ranges abfragen und zwar dann direkt mit dem definierten Namen, keine [] Klammern.x
      Gruß, defo

      Comment


      • #4
        Hi,
        hier ist ein sehr anschauliches einfachens Beispiel:

        http://tomaslind.net/2013/12/26/expo...to-sql-server/

        Comment


        • #5
          Guten Morgen Zusammen,
          Vielen Dank für die Antwort. Aber es funktioniert immer noch nicht.
          Dein Sheet in Excel heißt Employee?
          Ja die Excel - Tabelle heisst Employee. oder was meinen Sie?
          @Defo ich habe ihr Vorschlag anprobiert. neue Excel-Tabelle angelegt mit neue Name "Mappe1" aber ich bekomme die gleiche Fehlermeldung.
          dann unter dem Originalname darauf zugreifen.
          Was ist der Originalname? Name von der Exceldatei?
          Alternativ zum Sheetnamen mit $ Notation (oder wie auch immer), kann man auch benannte Ranges abfragen und zwar dann direkt mit dem definierten Namen, keine [] Klammern.x
          du meinst so
          Code:
              OleDbCommand cmd2 = new OleDbCommand("SELECT * FROM Employee", excelConnection);
                                  OleDbDataReader dReader2 = cmd2.ExecuteReader();
          In diesem Fall bekomme ich die Fehlermeldung
          Code:
          Das Microsoft Access-Datenbankmodul konnte das Objekt 'Employee' nicht finden. Stellen Sie sicher, dass das Objekt vorhanden ist und dass die Namens- und Pfadangaben richtig eingegeben wurden. Ist 'Employee' kein lokales Objekt, sollten Sie die Netzwerkverbindung prüfen oder sich an den Serveradministrator wenden.
          @Spiders0815 Ich kenne mich mit VB nicht. ein bsp mit C# kann ich einfach nachvollziehen. Aber ich werde trotzdem mit dein Bsp mit VBA anprobieren
          Danke im voraus für die Hilfe. Anhang die Bilder mit Fehler.
          Fehler2.jpgFehlerExecuteReader.jpg
          MfG

          Comment


          • #6
            Originally posted by maeva View Post
            Guten Morgen Zusammen,
            Vielen Dank für die Antwort. Aber es funktioniert immer noch nicht. Ja die Excel - Tabelle heisst Employee. oder was meinen Sie?
            Nun ja in dem xlsx das du hochgeladen hattest stand Tabelle1 am Sheet dran und nicht Employee.

            Comment


            • #7
              Hallo Ralf,
              Danke für deine Antwort. Dann weiss ich nicht was der Sheet ist. Ich dachte Sheet ist der Name, die ich an meine Excel- Tabelle gebe.
              Bitte wo liest du dieser Sheet Name ?
              Ich hatte noch eine Frage. Welche Parameter muss ich für diese Zeile geben
              Code:
                   String strConnection = "Data Source=.\\NB-GM;AttachDbFilename='C:\\Users\\Hemant\\documents\\visual studio 2010\\Projects\\CRMdata\\CRMdata\\App_Data\\Database1.mdf';Integrated Security=True;User Instance=True";
              .\\NB-GM ist mein Servername Lokal
              denn beim ausführen von den Code
              Code:
               String strConnection = "Data Source=.\\NB-GM;AttachDbFilename='C:\\Users\\Hemant\\documents\\visual studio 2010\\Projects\\CRMdata\\CRMdata\\App_Data\\Database1.mdf';Integrated Security=True;User Instance=True";
                              SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);
                              sqlBulk.DestinationTableName = "Employee";
                              sqlBulk.WriteToServer(dReader);
              . Ich bekomme die Fehlermeldung
              Code:
               sqlBulk.WriteToServer(dReader); Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt. (provider: SQL Network Interfaces, error: 26 - Fehler beim Bestimmen des angegebenen Servers/der angegebenen Instanz)
              Danke

              Comment


              • #8
                Bitte was ist dieser Parameter
                Code:
                AttachDbFilename='C:\\Users\\Hemant\\documents\\visual studio 2010\\Projects\\CRMdata\\CRMdata\\App_Data\\Database1.mdf'
                Danke

                Comment


                • #9
                  xlsSheet.jpg

                  Guckst du

                  Comment


                  • #10
                    Ok.Danke Das Stimmt!
                    Jetzt muss ich in SQL Tabelle Schreiben

                    Comment

                    Working...
                    X