Vb.Net Excel Exporting

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Fatih54
    Fatih54's avatar
    Kayıt Tarihi: 16/Ağustos/2012
    Erkek

    Kayıt Defteri adlı yazılımımda kullandım işinize yarar diye paylaşıyorum:
    Bu sadece örnek modüldür:

    'Tetrasoft
    'Author: Fatih
    '=================
    'Exporting Module
    'Core module to export listview items
    Imports System.IO
    Module mdlExport
        Public Sub ExportExcel(ByVal dosyakonum As String, Optional ByVal sütun As String = vbNullString, Optional ByVal satirlar As String = vbNullString)
            On Error GoTo Hata_EBulunamadi
            'Excel.workbooks(1).worksheets(1).Cells(1, 2) => İlk Cells Parametresi Satır İkinci Cells Parametresi sütun
            Dim exdosyakonum As String
            Dim Excel As Object
            frmMain.prgBar1.Visible = True
            Excel = CreateObject("Excel.Application")
            frmMain.prgBar1.Value += 20
            frmMain.tsDefterBilgi.Refresh()
            Select Case Excel.Version
                Case "12.0"
                    exdosyakonum = dosyakonum.Substring(0, dosyakonum.Length - 4) & ".xlsx"
                Case Else 'Bug oluşabilir!
                    exdosyakonum = dosyakonum.Substring(0, dosyakonum.Length - 4) & ".xls"
            End Select
            If File.Exists(exdosyakonum) Then
                Kill(exdosyakonum)
                Application.DoEvents()
                If File.Exists(exdosyakonum) Then
                    MsgBox("Bir hata oluştu", MsgBoxStyle.Critical)
                    Exit Sub
                End If
            End If
            frmMain.prgBar1.Value += 5
            frmMain.tsDefterBilgi.Refresh()
            Excel.ScreenUpdating = True
            Excel.Visible = False 'True
            Dim xlWorkSheet As Object = Excel.workbooks.add
            'Dim poslar As Integer
            Dim sonpos As Integer
            For z = 0 To frmMain.Defter.Columns.Count - 1
                Excel.workbooks(1).worksheets(1).cells(1, z + 1).value = frmMain.Defter.Columns(z).Text
                frmMain.prgBar1.Value += 1
                frmMain.tsDefterBilgi.Refresh()
            Next
            For k = 0 To frmMain.Defter.Items.Count - 1
                Excel.workbooks(1).worksheets(1).cells(frmMain.Defter.Items(k).Index + 2, 1).value = frmMain.Defter.Items(k).Text
                For z = 0 To frmMain.Defter.Items(k).SubItems.Count - 1
                    Excel.workbooks(1).worksheets(1).cells(frmMain.Defter.Items(k).Index + 2, z + 1).value = frmMain.Defter.Items(k).SubItems(z).Text
                Next
                sonpos = k + 4
                frmMain.prgBar1.Value += 1
                frmMain.tsDefterBilgi.Refresh()
            Next
            Excel.workbooks(1).worksheets(1).cells(sonpos, 1).value = "[Tetrasoftware]"
            Excel.workbooks(1).worksheets(1).cells(sonpos + 1, 1).value = "//Converted from 'Kayit Defteri' file. Based on Excel Com Object"
            frmMain.prgBar1.Value += 2
            frmMain.tsDefterBilgi.Refresh()
            'Excel.workbooks(1).worksheets(1).cells(1, 2).value = "Success"
            xlWorkSheet.SaveAs(exdosyakonum)
            frmMain.prgBar1.Value += 20
            frmMain.tsDefterBilgi.Refresh()
            Excel.quit()
            Excel = Nothing
            frmMain.prgBar1.Value = frmMain.prgBar1.Maximum
            If MsgBox("Dönüştürme İşlemi Başarılı!" & vbCrLf & "Excel Dosyasını Açmak İçin Evet'e Basın", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
                System.Diagnostics.Process.Start(exdosyakonum)
            End If
            frmMain.prgBar1.Value = 0
            frmMain.tsDefterBilgi.Refresh()
            frmMain.prgBar1.Visible = False
            frmMain.tsDefterBilgi.Refresh()
            Exit Sub
    Hata_EBulunamadi:
            MsgBox("Dönüştürmede bir sorun oluştu. Muhtemelen 'Microsoft Office' uygulaması bilgisayarınızda kurulu değil", MsgBoxStyle.Exclamation)
        End Sub
    End Module

    Şuan tam olarak vaktim yok önemli kısımlar:

     Excel.workbooks(1).worksheets(1).cells(1, 2).value = "Success"

    Burada Cells(x,x2) x -> Satır x2 -> Sütun.

    Excel.Quit Excel'i kapatır.
    Excel.ScreenUpdating = True 'Bunu bende tam olarak bilmiyorum örnek COM Object kullanımında buldum Office konusunda çok iyi değilim. Ancak açık kalsın autodraw gibi bir şey olabilir.
    Excel.Visible = False 'Excel i görünür/görünmez yapar False olursa excel arkaplanda çalışır görünmez kullanıcıya.

    Bu arada http://www.tahribat.com/Forum-Bitblt-Api-Sinin-Kalici-Hali-Onemli-165484/ konusunda hala yardım bekliyorum :(

Toplam Hit: 768 Toplam Mesaj: 1