none
Datatable via Oledb nach Excel 2007 exportieren RRS feed

  • Frage

  • Hallo NG,
    ich möchte ein Datatable- Objekt in eine Excel- Tabelle exportieren.

    Dim xlsConn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
                                                         fileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";")
                xlsConn.Open()
    
                Dim cmd As New OleDb.OleDbCommand("create table [test] (ID integer, Anschluss varchar(50), Teilnehmer varchar(50), Anrufzeit datetime, Rufnummer varchar(50), Eintrag varchar(100), Sekunden integer, Betrag double)", xlsConn)
                
                Try
                    cmd.ExecuteNonQuery()
                    Dim sql As String = "insert into test (ID, Anschluss, Teilnehmer, Anrufzeit, Rufnummer, Eintrag, Sekunden, Betrag) Values (" & _
                    "@id, @anschluss, @teilnehmer, @anrufzeit, @rufnummer, @eintrag, @sekunden, @betrag)"
                    cmd.CommandText = sql
                    For Each row As DataRow In data.Rows
                        With cmd.Parameters
                            .Clear()
                            .AddWithValue("@id", row("id"))
                            .AddWithValue("@anschluss", row("anschluss"))
                            .AddWithValue("@teilnehmer", row("teilnehmer"))
                            .AddWithValue("@anrufzeit", row("anrufzeit"))
                            .AddWithValue("@rufnummer", row("rufnummer"))
                            .AddWithValue("@eintrag", row("eintrag"))
                            .AddWithValue("@sekunden", row("sekunden"))
                            .AddWithValue("@betrag", row("betrag"))
                        End With
                    Next
                    cmd.ExecuteNonQuery()
    
                Catch ex As Exception
                    MsgBox(ex.Message, MsgBoxStyle.Critical)
                Finally
                    xlsConn.Close()
                    cmd.Dispose()
                    xlsConn.Dispose()
                End Try

    In der Exceldatei wird aber immer nur die letzte Zeile der Tabelle gespeichert. Was mache ich falsch?
    cu
    Donnerstag, 10. Dezember 2009 08:18

Antworten

  • Hallo nochmal,
    ich habs jetzt so gelöst:

    cmd = New OleDb.OleDbCommand("select * from [test]", xlsConn)
                Dim da As New OleDb.OleDbDataAdapter(cmd)
                Dim cb As New OleDb.OleDbCommandBuilder(da)
                Dim xTable As New DataTable("testTable")
                da.Fill(xTable)
                For Each row As DataRow In data.Rows
                    Dim r As DataRow = xTable.NewRow
                    r.ItemArray = row.ItemArray.Clone
                    xTable.Rows.Add(r)
                Next
                da.Update(xTable)
                cb.Dispose()
                da.Dispose()
                cmd.Dispose()
    Dann kommen alle Zeilen an.
    cu
    • Als Antwort markiert H_Jabs Donnerstag, 10. Dezember 2009 10:11
    Donnerstag, 10. Dezember 2009 10:11