Bu yazımızda daha önce C# Windows Form ile yapmış olduğumuz Excel’e Veri aktarma işlemini WPF Form kullanarak gerçekleştireceğiz. Örneğimizde daha önceden verilerin çekilmiş olduğu bir proje kullanacağım.Bu projeye yeni bir Button ekleyerek verilerin Excel dosyasına aktarılmasını sağlayacağım.
Kullanacağımız WPF Formumuz aşağıdaki gibidir.
Öncelikle Excel için Reference eklememiz gerekiyor. Solution Explorer penceresinde projenin üstünde sağ tıklayarak Add-Reference diyoruz.
Buradan Microsoft Excel 16.0 Object Library Seçerek OK diyoruz.
Şimdi kodlarımıza bakalım.
Öncelikle ;
1 2 3 4 | using Excel = Microsoft.Office.Interop.Excel; using Microsoft.Office.Interop.Excel; |
namespacelerini ekliyoruz.
public partial class MainWindow : Window
satırında Window ibaresinde açılır kutuya tıklayarak aşağıdaki seçeneği seçerek implement işlemini gerçekleştiriyoruz.
Daha sonra yine aynı yerde aynı işlemi yaparak aşağıdaki seçeneği tıklıyoruz.
Şimdi Excel’e Aktar butonu için aşağıdaki kodları yazıyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | private void Button_Click(object sender, RoutedEventArgs e) { Excel.Application excel = new Excel.Application(); excel.Visible = true; //www.yazilimkodlama.com Workbook workbook = excel.Workbooks.Add(System.Reflection.Missing.Value); Worksheet sheet1 = (Worksheet)workbook.Sheets[1]; for (int j = 0; j < dgrid.Columns.Count; j++) //Başlıklar için { Range myRange = (Range)sheet1.Cells[1, j + 1]; sheet1.Cells[1, j + 1].Font.Bold = true; //Başlığın Kalın olması için sheet1.Columns[j + 1].ColumnWidth = 15; //Sütun genişliği ayarı myRange.Value2 = dgrid.Columns[j].Header; } for (int i = 0; i < dgrid.Columns.Count; i++) { //www.yazilimkodlama.com for (int j = 0; j < dgrid.Items.Count; j++) { TextBlock b = dgrid.Columns[i].GetCellContent(dgrid.Items[j]) as TextBlock; Microsoft.Office.Interop.Excel.Range myRange = (Microsoft.Office.Interop.Excel.Range)sheet1.Cells[j + 2, i + 1]; myRange.Value2 = b.Text; } } } |
Programımızı çalıştıralım ve Excele Aktar butonuna basalım.
Örneğe ait video:
öncelikle ahmet hocam proje ve yardım için teşekkürler çok işime yaradı ve bahsettiğiniz sorunu çözdüm DataGrid’i ScrollViewer içine alırsanız sorunsuz çalışır kodlar.
Bende teşekkür ederim.
s.a hocam bakabildiniz mi neden böyle bir hata yapıyormuş.
evet hocam yaptım ama ilk sutunun verilerini yükledikten sonra myRange.Value2 = b.Text; bu satırda hata veriyor diğer sutuna atlamıyor.
Projeyi .rar olarak yollarsaniz aksama doğru bakabilirim.
hocam burun.
https://mega.nz/#!y4NDBaII!gzw_Zxq9tMFL1p-1DqA2eO12uK4dRR-je_Nr7w-f3tc
hocam 4 satır verileri atıyor 5.nci satırda hata veriyor.
Fırsat bulunca ilgileneceğim.
s.a hocam ilgi ve alakanız için teşekkür ederim.
dediğiniz gibi yaptım ama başlıkları atıyor ilk sutunu verileri ekliyor ikinci sutun gecmeden bu satırda hata veriyor —myRange.Value2 = b.Text;— neden yapıyordur.
Yazı sonuna eklediğim videoya baktınız mı?
http://i.hizliresim.com/LQqaP1.jpg
Merhaba. Yolladığınız projeyi inceledim. ilk defa böyle birşeyle karşılaştım :). Datagrid yüksekliğini arttırırsanız (tüm kayıtlar görünecek şekilde) sorun olmuyor. Bununla ilgili bir araştırma yapmam gerekiyor.
hocam tum kayıtları nasıl tam ekran yapcaz ekrana sığmaz ki.
başka bir şekilde verileri nasıl excel atabiliriz. hic datagridde göstermeden de atabilirmiyiz. yada listboxda olabilir.
Ahmet Bey merhaba,
Konu ile alakalı bir çözüm bulabildiniz mi. Aynı problemi bende yaşamaktayım.