AccessTr.neT

Tam Versiyon: "Hızlı" SQL veri tabanından tabloyu excel aktarma
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
merhabalar
ben bir tablomda 30915 kayıt mevcut bir butona tıklayın Sql tablomdan direk Excel aktarmasını istiyorum google v.s gibi sitelerde bir çok kod buldum denemedım ve veri aktarma çok yavaş Access daha hızlı kalıyordu bu konuda Access gönder dedimde hemen açıyor ama şimdi bunu VB.net göre yapmaya çalışıyorum burada takıldım bu konuda yardım edermisiniz
hızlı aktarmasını istiyorum benım buldugum kodlar 15 dk geçiyor daha aktarma bitemiyor yardımcı olursanız sevinirim

herkeze hayırlı ramazanlar
(06/06/2016, 03:47)ramazanemrullah yazdı: [ -> ]merhabalar
ben bir tablomda 30915 kayıt mevcut bir butona tıklayın Sql tablomdan direk Excel aktarmasını istiyorum google v.s gibi sitelerde bir çok kod buldum denemedım ve veri aktarma çok yavaş Access daha hızlı kalıyordu bu konuda Access gönder dedimde hemen açıyor ama şimdi bunu VB.net göre yapmaya çalışıyorum burada takıldım bu konuda yardım edermisiniz
hızlı aktarmasını istiyorum benım buldugum kodlar 15 dk geçiyor daha aktarma bitemiyor yardımcı olursanız sevinirim

herkeze hayırlı ramazanlar

Verilerinizin dataridde listelendiğini varsayarak cevaplıyorum.
Public Sub Excele_Aktar(ByVal Datagrid As DataGridView)

       Dim rowsTotal, colsTotal As Short
       Dim I, j, iC As Short
       System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
       Dim xlApp As New Excel.Application
       Try
           Dim excelBook As Excel.Workbook = xlApp.Workbooks.Add
           Dim excelWorksheet As Excel.Worksheet = CType(excelBook.Worksheets(1), Excel.Worksheet)
           xlApp.Visible = True
           rowsTotal = Datagrid.RowCount - 1
           colsTotal = Datagrid.Columns.Count - 1
           With excelWorksheet
               .Cells.Select()
               .Cells.Delete()
               For iC = 0 To colsTotal
                   .Cells(1, iC + 1).Value = Datagrid.Columns(iC).HeaderText
               Next
               For I = 0 To rowsTotal - 1

                   'For j = 0 To colsTotal - 1
                   For j = 0 To colsTotal
                       .Cells(I + 2, j + 1).value = Datagrid.Rows(I).Cells(j).Value
                   Next j


               Next I
               '.Rows("1:1").Font.FontStyle = "Bold"
               '.Rows("1:1").Font.Size = 10
               .Cells.Columns.AutoFit()
               .Cells.Select()
               .Cells.EntireColumn.AutoFit()
               .Cells(1, 1).Select()
           End With
       Catch ex As Exception
           MsgBox("Aktarım Hatası " & ex.Message)
       Finally
           System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
           xlApp = Nothing
       End Try

   End Sub

Private Sub ExcellAktar_Click(sender As Object, e As EventArgs) Handles ExcellAktar.Click
       Excele_Aktar(DataGridView1)
   End Sub
(08/02/2017, 17:26)drummers yazdı: [ -> ]
(06/06/2016, 03:47)ramazanemrullah yazdı: [ -> ]merhabalar
ben bir tablomda 30915 kayıt mevcut bir butona tıklayın Sql tablomdan direk Excel aktarmasını istiyorum google v.s gibi sitelerde bir çok kod buldum denemedım ve veri aktarma çok yavaş Access daha hızlı kalıyordu bu konuda Access gönder dedimde hemen açıyor ama şimdi bunu VB.net göre yapmaya çalışıyorum burada takıldım bu konuda yardım edermisiniz
hızlı aktarmasını istiyorum benım buldugum kodlar 15 dk geçiyor daha aktarma bitemiyor yardımcı olursanız sevinirim

herkeze hayırlı ramazanlar

Verilerinizin dataridde listelendiğini varsayarak cevaplıyorum.
Public Sub Excele_Aktar(ByVal Datagrid As DataGridView)

       Dim rowsTotal, colsTotal As Short
       Dim I, j, iC As Short
       System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
       Dim xlApp As New Excel.Application
       Try
           Dim excelBook As Excel.Workbook = xlApp.Workbooks.Add
           Dim excelWorksheet As Excel.Worksheet = CType(excelBook.Worksheets(1), Excel.Worksheet)
           xlApp.Visible = True
           rowsTotal = Datagrid.RowCount - 1
           colsTotal = Datagrid.Columns.Count - 1
           With excelWorksheet
               .Cells.Select()
               .Cells.Delete()
               For iC = 0 To colsTotal
                   .Cells(1, iC + 1).Value = Datagrid.Columns(iC).HeaderText
               Next
               For I = 0 To rowsTotal - 1

                   'For j = 0 To colsTotal - 1
                   For j = 0 To colsTotal
                       .Cells(I + 2, j + 1).value = Datagrid.Rows(I).Cells(j).Value
                   Next j


               Next I
               '.Rows("1:1").Font.FontStyle = "Bold"
               '.Rows("1:1").Font.Size = 10
               .Cells.Columns.AutoFit()
               .Cells.Select()
               .Cells.EntireColumn.AutoFit()
               .Cells(1, 1).Select()
           End With
       Catch ex As Exception
           MsgBox("Aktarım Hatası " & ex.Message)
       Finally
           System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
           xlApp = Nothing
       End Try

   End Sub

Private Sub ExcellAktar_Click(sender As Object, e As EventArgs) Handles ExcellAktar.Click
       Excele_Aktar(DataGridView1)
   End Sub

merhaba böyle aktarma yapabiliyorum fakat çok yavaş yapıyor aktarmayı bu kadar kayıt 1 saat te bitmiyor daha hızlı bir şekilde DataGridView1' ile deilde direk tablodan excele atsam cok iyi olur
Örnek projenizi ekleyin yardımcı olmaya çalışalım.