Vb.Net Excel Exporting
-
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
