Announcement

Collapse
No announcement yet.

DataGridView nach EXCEL

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

  • DataGridView nach EXCEL

    Hallo - Habe schon heftig gegoogelt aber so richtig nichts funktionierendes gefunden. Ich will den Inhalt eines DataGridViews in einem Formular nach EXCEL exportieren und da weiter verarbeiten. Mein Ansatz:

    Code:
            Dim oApp As Object
            Dim oDoc As Object
            oApp = CreateObject("Excel.Application")
            oApp.Visible = True
            oDoc = oApp.Workbooks.Add
            oApp.UserControl = True
            oDoc = Nothing
            oApp = Nothing
    funktioniert nur insoweit, dass EXCEL prima aufgeht aber ansonsten mir nur eine leere Mappe zeigt. Wie bekomme ich es hin, das mir der Inhalt des DataGridViews - bei mir heisst das Ding 'Pr_filterDataGridView' im Excel angezeigt bekomme.

    Danke Euch!

    Mark B

  • #2
    Hallo,

    gehe besser einen Weg der auf Excel 2007 Connection String Samples - ConnectionStrings.com basiert. Da ist das Exportieren leicht.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Sorry - aber damit kann ich nichts anfangen:

      Code:
      Data Source =c:\myExcelFile.xlsx;HDR=no;Format=xlsx;
      Mich interessieren Files in dem Stadium nicht. Ich will einfach nur eine DataGridView im Excel sehen, wohin ich das dann speichere ist ein anderes Ding.

      Mark B

      Comment


      • #4
        so funktioniert es:

        Code:
        Dim xls_Appl As Excel.Application               ' Excel Anwendung
                Dim xls_Mappe As Excel.Workbook                 ' Excel Arbeitsmappe
                Dim xls_Blatt As Excel.Worksheet                ' Excel Blatt (Tabelle)
                Dim Anzahlzeilen As Integer
        
                xls_Appl = New Excel.Application() ' Excel Instanz bilden
                xls_Appl.Visible = True
                xls_Mappe = xls_Appl.Workbooks.Add()
                xls_Blatt = xls_Mappe.ActiveSheet
        
                'hier muß der Name des zu exportierenden DataGridViews rein
                With Tbl_ae_inland_tempDataGridView
                    For Spalte As Integer = 0 To .Columns.Count - 1
                        xls_Blatt.Cells(1, Spalte + 1).Value = .Columns(Spalte).HeaderText
                        xls_Blatt.Cells(1, Spalte + 1).Font.Bold = True
                    Next
        
                    Anzahlzeilen = .Rows.Count
                    If .AllowUserToAddRows = True Then
                        Anzahlzeilen = Anzahlzeilen - 1 ' Leerzeile abziehen
                    End If
        
                    For Zeile As Integer = 0 To Anzahlzeilen - 1
                        For Spalte As Integer = 0 To .Columns.Count - 1
                            xls_Blatt.Cells(Zeile + 2, Spalte + 1).Value _
                                = .Rows(Zeile).Cells(Spalte).Value.ToString
                        Next
                    Next
                End With
        ABER: im EXCEL sind die Spalten (Währung) ohne jedes Format und nicht berechenbar. Selbst mit einer Zwangsformatierung passiert nichts. Sie bleiben als Text formatiert. Erst nach erheblichen Handständen kann ich sie zu Zahlen machen. Läßt sich sowas nicht schon beim Export erledigen ???

        Danke !

        Mark B

        Comment


        • #5
          Hast Du Dir überhaupt angeschaut worums bei dem Link ging? Du kannst Deine BindingSource direkt an ein DataTable binden die wiederum an Excel hängt. Dann kannst Du ganz einfach Daten in die DataTable schreiben und diese werden in dem hinterlegten Excel File abgelegt. Klingt jetzt erstmal einfacher als Dein Ansatz

          Du kannst auf der jeweiligen Cell bzw. Range das Style Property setzen, dann werden die Zellen in dem gewünschten Format formatiert. Könnte man aber auch per google herausfinden

          Comment


          • #6
            Danke für Deinen Hinweis, ich habe hinsichtlich der Formatierung schon was machen können. Mit:

            Code:
            xls_Blatt.Cells(Zeile + 2, Spalte + 1).Value _
                                    = .Rows(Zeile).Cells(Spalte).Value
            exportiert er mir zumindest schon mal Zahlen und keine Texte mehr. Wie kann ich ihn eigentlich noch beibringen, das er Währung exportieren soll ????

            Danke schon mal!

            Mark B

            Comment


            • #7
              Mh ich weiss jetzt auch nicht genau wies geht. Aber für Excel interop gibt es einen sehr guten Trick.

              1. Starte die Aufzeichnung eines neuen Makros
              2. Führe die Schritte die Du später per Code machen willst aus (oder nur den Teil den Du wissen willst - z.B. formatieren einer Zelle)
              3. Beende die Aufzeichnung des Makros
              4. Öffne das Makro im Visual Basic Editor

              Das was Du dort siehst ist fast 1 zu 1 das was Du in C# im Code eintippen musst. Zumindest kennt man dann die Befehle die man braucht und welche Werte man einsetzen muss

              Comment


              • #8
                Danke für den Tip - habe ich gemacht und der VBA Editor zeigte mir:

                Code:
                xls_Blatt.Cells(Zeile + 2, Spalte + 1).Selection.NumberFormat = "#,##0.00 $" _
                Habe ich so in .Net eingefügt. Ging auch fehlerfrei aber es kommt im EXCEL immer noch kein Währungsformat an :-(

                Mark B

                Comment


                • #9
                  Machst Du das VOR oder NACH dem setzen des Wertes. Probiere mal beide Varianten. Evtl. passt der da selbständig was an... da muss man einfach ein bischen rumspielen.

                  Comment

                  Working...
                  X