none
C# Sql Server Excele Veri Aktarma RRS feed

  • 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İ



    25 Ocak 2017 Çarşamba 06:38

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
    25 Ocak 2017 Çarşamba 09:05
    Yanıtlayıcı
  • 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
    26 Ocak 2017 Perşembe 08:52
    Yanıtlayıcı

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
    25 Ocak 2017 Çarşamba 09:05
    Yanıtlayıcı
  • 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

    26 Ocak 2017 Perşembe 07:15
  • Formu Word'e taşıyıp, Word içerisinden "Mail Merge" özelliğini kullanmak da bir çözüm olabilir.

    pgnchess.com

    dergikapaklari.com

    26 Ocak 2017 Perşembe 07:31
  • 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
    26 Ocak 2017 Perşembe 08:52
    Yanıtlayıcı
  • Ç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


    27 Ocak 2017 Cuma 08:22
  •  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:)

    27 Ocak 2017 Cuma 09:08
  • Sedat,

    Su anda yeteri kadar vaktim yok ve hafta sonu da buyuk ihtimalle mesgulum. Unutmazsam haftaya bazi seyler eklerim.

    27 Ocak 2017 Cuma 13:48
    Yanıtlayıcı
  • Çok Teşekkür ederim Çetin Hocam.
    27 Ocak 2017 Cuma 13:56
  • 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 
    27 Ocak 2017 Cuma 14:25
    Yanıtlayıcı
  • Ç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.

    28 Ocak 2017 Cumartesi 12:22
  • Ç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.

    Hala Bu işi yapmanın en kolay yolu Mail Merge diyorum. Programlamaya da ihtiyacınız yok. Sadece word ve sql. Dokuman tipini directory olarak seçerseniz tek tek işlem yapabilirsiniz. Formu ister print eder ister mail olarak gönderir isterseniz yeni dokuman olarak kaydederisiniz. Excel'de alanları hücrelere yerleştireceğim diye uğraşmak yerine de görsel olarak word formu üzerinde istediğiniz field'ı istediğiniz alana yerleştirirsiniz. Formu hazırladıktan sonra bu bütün bu işlemleri yapmak toplam 3 dk'yı geçmez.  Sonrası sadece istediğiniz kişiyi seçmek artık.

    pgnchess.com

    dergikapaklari.com

    28 Ocak 2017 Cumartesi 12:38