En iyi yanıtlayıcılar
C# Sql Server Excele Veri Aktarma

Soru
-
Merhaba arkadaşlar...
Sql Server veri tabanımda kayıtlı insan kaynakları formum var.Site üzerinden doldurulan tüm formlar bu veritabanıma düşüyor.
Ben bu verileri dataGridView1 e çekip daha sonra dataGridView1 de hangi id ye tıklarsam o iş başvuru formunu dışarıda bulunan Tasarımı Yapılmış boş bir excel dosyasını açııp nasıl farklı kaydettirebilirim.
Yardımcı olursanız çok sevinirim.
Saygılarımla...
Sedat TİRYAKİ
- Düzenleyen Sedat Tiryaki 25 Ocak 2017 Çarşamba 06:49
Yanıtlar
-
Forumda defalarca Excel otomasyon, data aktarma, SQL'den dogrudan excel'e yazma ... konularinda ornekler verildi. Yapilacak islem gore secilebilecek cok farkli yontemler var. Ornegin burada bir ornek var.
Sorunuzda, ne kadarini yazdiginiz nerede takildiginiz belli olmuyor.
- Yanıt Olarak İşaretleyen Sedat Tiryaki 27 Ocak 2017 Cuma 08:22
-
Merhaba Çetin hocam.
Aşağıdaki linkten toplu şekilde exele aktarma var.Db de yüzlerce kayıt olduğunu düşünürsek en hızlı aktarma yolu hangi yoldur hocam?
Aslında benim yapmak istediğim dataGridViewe çektiğim verilerin hangi id sine tıklarsam onu exele aktarsın.
http://csharp.net-informations.com/excel/csharp-excel-datagridview.htm
O linki niye ekledigini anlamadim, sana zaten daha iyisini vermistim :)
En hizlisi otomasyonla QueryTables.Add kullanmak (aslinda tek sefer yapilacak bir is, manuel ya da kodla yapilabilir). Senin kayitlarin MS SQL serverda olduguna gore, dogrudan oradan baglanip alir. Araya datagridview sokmaya gerek yok.
Tam olarak ne yapmak istedigini bilmedigimden cok da fazla bir sey soyleyemiyorum. Verdigim linki de incele istersen. Binlerce, onbinlerce kayit saniyede aktariliyor. Senin verdigin linkteki yontem "yapacak baska bir sey kalmadiysa, son care" cinsinden hic tavsiye edilmeyen bir yol, yine de az sayidaki veri icin kullanilabilir.
- Yanıt Olarak İşaretleyen Sedat Tiryaki 27 Ocak 2017 Cuma 08:22
Tüm Yanıtlar
-
Forumda defalarca Excel otomasyon, data aktarma, SQL'den dogrudan excel'e yazma ... konularinda ornekler verildi. Yapilacak islem gore secilebilecek cok farkli yontemler var. Ornegin burada bir ornek var.
Sorunuzda, ne kadarini yazdiginiz nerede takildiginiz belli olmuyor.
- Yanıt Olarak İşaretleyen Sedat Tiryaki 27 Ocak 2017 Cuma 08:22
-
Merhaba Çetin hocam.
Aşağıdaki linkten toplu şekilde exele aktarma var.Db de yüzlerce kayıt olduğunu düşünürsek en hızlı aktarma yolu hangi yoldur hocam?
Aslında benim yapmak istediğim dataGridViewe çektiğim verilerin hangi id sine tıklarsam onu exele aktarsın.
http://csharp.net-informations.com/excel/csharp-excel-datagridview.htm
-
Formu Word'e taşıyıp, Word içerisinden "Mail Merge" özelliğini kullanmak da bir çözüm olabilir.
dergikapaklari.com -
Merhaba Çetin hocam.
Aşağıdaki linkten toplu şekilde exele aktarma var.Db de yüzlerce kayıt olduğunu düşünürsek en hızlı aktarma yolu hangi yoldur hocam?
Aslında benim yapmak istediğim dataGridViewe çektiğim verilerin hangi id sine tıklarsam onu exele aktarsın.
http://csharp.net-informations.com/excel/csharp-excel-datagridview.htm
O linki niye ekledigini anlamadim, sana zaten daha iyisini vermistim :)
En hizlisi otomasyonla QueryTables.Add kullanmak (aslinda tek sefer yapilacak bir is, manuel ya da kodla yapilabilir). Senin kayitlarin MS SQL serverda olduguna gore, dogrudan oradan baglanip alir. Araya datagridview sokmaya gerek yok.
Tam olarak ne yapmak istedigini bilmedigimden cok da fazla bir sey soyleyemiyorum. Verdigim linki de incele istersen. Binlerce, onbinlerce kayit saniyede aktariliyor. Senin verdigin linkteki yontem "yapacak baska bir sey kalmadiysa, son care" cinsinden hic tavsiye edilmeyen bir yol, yine de az sayidaki veri icin kullanilabilir.
- Yanıt Olarak İşaretleyen Sedat Tiryaki 27 Ocak 2017 Cuma 08:22
-
Çetin hocam Exele hızlı veri aktarmanın yolunu bilmiyordum sizin sayenizde aşağıdaki kodlarla Sql Serverde bulunan kayıtları En hızlı bir şekilde Exele nasıl aktarılır onu öğrendim.
using Microsoft.Office.Interop.Excel; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ExeleVeriAktarma { public partial class Form1 : Form { public Form1() { InitializeComponent(); Microsoft.Office.Interop.Excel.Application xl = new Microsoft.Office.Interop.Excel.Application(); var workbook = xl.Workbooks.Add(); xl.Visible = true; Worksheet sht = ((Worksheet)workbook.ActiveSheet); Range target = (Range)sht.Range["A1"]; string strCon = @"OLEDB;Server=localhost;Database=DenemeDb;Uid=KullaniciAdi;Password=Sifre;"; string strSQL = "select * from TabloAdi"; sht.QueryTables.Add(strCon, target, strSQL).Refresh(); } } }
Şimdi hocam asıl benim yapmak istediğim şu,
Malumunuz insan kaynaklarına çok sayıda iş başvurusunda bulunuluyor.Ben bu iş başvurularını datagride çekim diyorum.Kullanıcı ister hepsini exele aktarsın isterse datagridden hangi id ye tıklarsa onu exele aktarsın istiyorum.Bu aktarmayı yaparken aslında ben şunu istiyorum.Dışarıda bulunan tasarımı yapılmış içi boş bir exelin içindeki hücrelere yerleşsin istiyorum;
Örneğin;
Saygılarımla hocam
- Düzenleyen Sedat Tiryaki 27 Ocak 2017 Cuma 08:29
-
Excel.Application uygulama = new Excel.Application();
Excel.Workbook belge;
uygulama.Visible = true;
belge = uygulama.Workbooks.Open(@"\\fs\Formlar\İzin Belge\excel_belge.xlsx");
//yukarıdaki kodlar ile excelde çalışltırılacak formun yolunu gösteriyorsun(şablonunun)
sorgu = "sql sorgun ";SqlCommand cmd = new SqlCommand(sorgu, girişEkrani.con);
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
Excel.Application uygulama = new Excel.Application();
//object Missing = System.Reflection.Missing.Value;
//Excel.Workbook belge = uygulama.Workbooks.Add(Missing); yeni workbook yani belge açma
//Excel.Worksheet calisma = (Excel.Worksheet)belge.Worksheets.get_Item(1); yeni bir çalışma alanı açma(sayfa)
//Excel.Range ExcelRange=calisma.UsedRange;
//calisma = (Excel.Worksheet)belge.ActiveSheet; açtığımız belgenin(workbook) geçerli çalışma alanı(worksheet) belirtme
uygulama.Visible = true;
object misValue = System.Reflection.Missing.Value;
uygulama.Workbooks.Add(@"\\fs\Formlar\İzin Belge\excel_belge.xlsx"); uygulama.Range["D14"].Value = sdr["adiSoyadi"].ToString();
uygulama.Range["D15"].Value = sdr["sicilNo"].ToString() + " -- " + sdr["TCNo"].ToString();
uygulama.Range["D16"].Value = (Convert.ToDateTime(sdr["iseGirisTarihi"])).ToShortDateString();
uygulama.Range["D17"].Value = sdr["gorevi"].ToString();
uygulama.Range["D18"].Value = sdr["departmani"].ToString();sdr.Close();
sdr.Dispose();
diye kullanabilirsin.istediğin hücreye istediğin değeriatayabilirsin.önceden kullanmıştım işime yaradı,önceki linklere bakamadım hocalarımız ne der bilmiyorum ama kızmasın:)
-
-
-
Bu arada, neden bu sekilde excel ciktisi istiyorsun? 1 tane icin boyle, 5 tane olursa nasil olacak? Excel yerine word daha mi iyi olurdu (mailmerge onerisi yerinde mesela).
Benim cok eskiden yazdigim "HeadHunter 2000" vardi. Galiba simdi freeware software olarak veriyormusuz, emin degilim. Bir bak istersen, 15+ yillik olsa da fikir verebilir.
Not: Evet, ucretsiz veriyormusuz. HeadHunter 2000- Düzenleyen CetinBasozEditor 27 Ocak 2017 Cuma 14:27
-
-
Çetin hocam ilginiz için çok teşekkür ederim.Allah razı olsun senden.
Hocam aşağıdaki excel sayfası gibi düşün tek bir kişiye tıkladığımda aşağıdaki alanlara yerleşsin istiyorum.İnsan kaynaklarındaki personel isterse bunu yazıcıdan çıkarsın.
dergikapaklari.com