15/10/2014, 17:45
Epplus İle excel Word Dosyası Oluşturma ve Veri Ekleme
16/10/2014, 09:20
alpeki99
Benim kendi projemde kullandığım metodu ekledim. Ben Excelden okuyup, okuduğumu veritabanına kaydediyorum:
C# kodlarını çevirici programlar ile VB.Net'e çevirdim hata olurmu bilemiyorum. Excel'e yazdırdığım kısmı bulamadım ancak şu siteden esinlenmiştim:
Kod:
Private Sub ExceldenBilgileriAl()
Using p As New ExcelPackage()
If Not String.IsNullOrEmpty(fileDialog.FileName) Then
Dim kacinciSatir As Byte = 1
' Excelden alınan bilginin kaçıncı satırdan başladığını takip etmek için kullandığımız değişken
Using oku As New FileStream(fileDialog.FileName, FileMode.Open)
p.Load(oku)
Dim ws As ExcelWorksheet = p.Workbook.Worksheets(1)
' Form üzerinden değişken değerini alıyoruz. Kaçıncı satırdan itibaren bilgiler balıyor.
kacinciSatir = Convert.ToByte(seKacinciSatir.EditValue)
Dim exceldeSonSatir As Integer = ws.Dimension.[End].Row
' Sütunlardaki değerleri parametreye girelim
Try
Dim ogrenciSql As String = "INSERT INTO ogrenciler (DonemId,KimlikNo,OgrenciNo,Ad,Soyad,Cinsiyet,VeliCep1,VeliCep2,VeliCep3,OkulKodu,OkulAdi,DanismanKodu,DanismanAdi,SinifKodu,DogumGunu) VALUES (@did,@kimno,@ogrno,@ad,@soyad,@cins,@veli1,@veli2,@veli3,@okulkodu,@okuladi,@danismankodu,@danismanadi,@sinifkodu,@dogum)"
cnn = New MySqlConnection(VT.BaglantiCumlesi)
Dim cmd As MySqlCommand
If cnn.State = ConnectionState.Closed OrElse cnn.State = ConnectionState.Broken Then
cnn.Open()
End If
cmd = New MySqlCommand(ogrenciSql, cnn)
For i As Integer = kacinciSatir To exceldeSonSatir
cmd.Parameters.AddWithValue("@did", lueDonemler.EditValue)
cmd.Parameters.AddWithValue("@kimno", ws.Cells(i, 1).Value)
cmd.Parameters.AddWithValue("@ogrno", ws.Cells(i, 2).Value)
cmd.Parameters.AddWithValue("@ad", ws.Cells(i, 3).Value)
cmd.Parameters.AddWithValue("@soyad", ws.Cells(i, 4).Value)
cmd.Parameters.AddWithValue("@cins", ws.Cells(i, 5).Value)
cmd.Parameters.AddWithValue("@veli1", ws.Cells(i, 6).Value)
cmd.Parameters.AddWithValue("@veli2", ws.Cells(i, 7).Value)
cmd.Parameters.AddWithValue("@veli3", ws.Cells(i, 8).Value)
cmd.Parameters.AddWithValue("@danismankodu", ws.Cells(i, 9).Value)
cmd.Parameters.AddWithValue("@danismanadi", ws.Cells(i, 10).Value)
cmd.Parameters.AddWithValue("@okulkodu", ws.Cells(i, 11).Value)
cmd.Parameters.AddWithValue("@okuladi", ws.Cells(i, 12).Value)
cmd.Parameters.AddWithValue("@sinifkodu", ws.Cells(i, 13).Value)
cmd.Parameters.AddWithValue("@dogum", ws.Cells(i, 14).Value)
cmd.ExecuteNonQuery()
cmd.Parameters.Clear()
Next
SonSayfaMesajiYaz()
Catch ex As MySqlException
lg.LogEkle("frmOgrenciler", "ExceldenBilgileriAl", ex.Message, ex.Number, Ortak.Kullanici.KullaniciId)
MessageBox.Show(ex.Message + Environment.NewLine + Environment.NewLine + ex.Number)
Finally
cnn.Close()
cnn.Dispose()
End Try
' FileStream oku döngüsü bitti
End Using
' dosya adı boşmu bitti
End If
End Using
' ExcelPackage
End Sub
C# kodlarını çevirici programlar ile VB.Net'e çevirdim hata olurmu bilemiyorum. Excel'e yazdırdığım kısmı bulamadım ancak şu siteden esinlenmiştim:
Alıntı:zeeshanumardotnet.blogspot.com.tr/2011/06/creating-reports-in-excel-2007-using.html
16/10/2014, 11:23
drummers
Dim FilePath As String = "C:\Deneme.xlsx"
Dim destination_file As New FileInfo(FilePath)
Try
destination_file.Delete()
Catch ex As Exception
End Try
Dim Yeni As New FileInfo(FilePath)
Dim Dosya As New ExcelPackage(Yeni)
Dim Sayfa As ExcelWorksheet = Dosya.Workbook.Worksheets.Add("Deneme")
Sayfa.Cells.Style.Font.Size = 11
Sayfa.Cells.Style.Font.Name = "Calibri"
Sayfa.Column(1).Width = 10
Sayfa.Column(2).Width = 30
Sayfa.Column(3).Width = 10
Sayfa.Column(4).Width = 10
Sayfa.Column(5).Width = 12
Sayfa.Column(3).Style.HorizontalAlignment = ExcelHorizontalAlignment.Right
Sayfa.Column(4).Style.HorizontalAlignment = ExcelHorizontalAlignment.Right
Sayfa.Column(5).Style.HorizontalAlignment = ExcelHorizontalAlignment.Right
Sayfa.Column(4).Style.Numberformat.Format = "###,###,##0.00;[RED](-###,###,##0.00)"
Sayfa.Column(5).Style.Numberformat.Format = "###,###,##0.00%;[RED](-###,###,##0.00%)"
Sayfa.Cells(1, 1).Value = "Ali"
Sayfa.Cells(3, 1).Value = "Velİ"
Sayfa.Cells(3, 2).Value = "Hasan"
Sayfa.Cells(3, 3).Value = "Mehmet"
Sayfa.Cells(3, 4).Value = "Kerim"
Sayfa.Cells(3, 5).Value = "%...."
Sayfa.Cells(1, 1).Style.Font.Bold = True
Sayfa.Cells(3, 1).Style.Font.Bold = True
Sayfa.Cells(3, 2).Style.Font.Bold = True
Sayfa.Cells(3, 3).Style.Font.Bold = True
Sayfa.Cells(3, 4).Style.Font.Bold = True
Sayfa.Cells(3, 5).Style.Font.Bold = True
Dosya.Save()
Bu şekilde oluşturdum. Fakat şunu yapmak istiyorum.
- Dim FilePath As String = "C:\Deneme.xlsx" burdaki dosyayı değilde yeniden bir dosya oluştursun
- Ekleme işlemi bitince doyayı ekrana açsın
Teşekkürler
17/10/2014, 00:43
alpeki99
Alıntı:Dim FilePath As String = "C:\Deneme.xlsx" burdaki dosyayı değilde yeniden bir dosya oluştursun
Net bir bilgi vermemişsiniz. Yeni bir dosya derken her defasında farklı bir dosyamı oluşturulacak?
Eğer bu şekilde istiyorsanız Deneme ismi yerine tarih-saat şeklinde bir isim verirsiniz DateTime kullanarak.
İsim aynı ancak her Excel'e göndermede önceki içerik mi silinecek?
Bu şekilde istiyorsanız File.Delete ile öncekini silebilirsiniz.
17/10/2014, 08:42
drummers
(17/10/2014, 00:43)alpeki99 yazdı:Alıntı:Dim FilePath As String = "C:\Deneme.xlsx" burdaki dosyayı değilde yeniden bir dosya oluştursun
Net bir bilgi vermemişsiniz. Yeni bir dosya derken her defasında farklı bir dosyamı oluşturulacak?
Eğer bu şekilde istiyorsanız Deneme ismi yerine tarih-saat şeklinde bir isim verirsiniz DateTime kullanarak.
İsim aynı ancak her Excel'e göndermede önceki içerik mi silinecek?
Bu şekilde istiyorsanız File.Delete ile öncekini silebilirsiniz.
Teşekkürler...