Listviewdeki veriyi excel e aktarma

Database veya herhangi bir veri kaynağından listview e aktardığınız verileri Listview den Excel’e veri aktarıp Excel dosyasında kayıt edebilirsiniz. Daha çok raporlama projelerinde Excel ile ilişkilendirerek kullanabileceğiniz bu uygulamayı nasıl yaparız basit bir örnek ile öğrenelim.

listview-excel-aktar

Resimdeki gibi boş bir forma listview kontrolü ve bir buton ekleyerek kod tarafına geçebiliriz. Buradaki örnekte listview i daha önceden bir şekilde doldurmuştum, konumuz aktarım olduğu için listview veri girilmesi gibi konulara girip de kod kısmını karıştırmamak istiyorum. Burada amacımız listviewdeki veriyi Excel dosyasına aktarmak.

csharp-excel-veri-aktarimi

Kod kısmına geçmeden projeye Microsoft Excel 15 Object Library referans olarak eklemeniz gerekir. Bunu Referance Manager içindeki COM kütüphanesi içinde bulabilirsiniz. Bu referansı eklemeden Excel dosyası oluşturma kodları hata verir. Ayrıca using Microsoft.Office.Interop.Excel; de kod tarafında using tarafında eklemeniz gerekir.

Gerekli ayarlamaları yaptıktan sonra kodlamaya artık geçebiliriz.

[cc lang=’csharp’ line_numbers=’false’]

private void btnExcel_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = true;
Microsoft.Office.Interop.Excel.Workbook wb = app.Workbooks.Add(1);
Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[1];
//Kolon başlıkları sabit olduğu için listviewdeki veri aktarılmadan önce sabit verileri excel e giriyoruz.
object hucre;
Range rr;
string str;

hucre = ws.Cells[1, 1];
rr = ws.get_Range(hucre, hucre);
str = “İD”;
rr.Value2 = str;
rr.Font.Bold = true;
rr.Font.Size = 12;

hucre = ws.Cells[1, 2];
rr = ws.get_Range(hucre, hucre);
str = “Adı”;
rr.Value2 = str;
rr.Font.Bold = true;
rr.Font.Size = 12;

hucre = ws.Cells[1, 3];
rr = ws.get_Range(hucre, hucre);
str = “Soyadı”;
rr.Value2 = str;
rr.Font.Bold = true;
rr.Font.Size = 12;
//toplam üç kolon girdik. Stilini değiştirdik.

int dikey = 2;
int yatay = 2;
foreach (ListViewItem lvi in listView1.Items)
{

dikey = 1;
foreach (ListViewItem.ListViewSubItem lvs in lvi.SubItems)
{
ws.Cells[yatay, dikey] = lvs.Text;
dikey++;
//Excel kolon genişliğini buradan aayarlıyoruz.
ws.Columns.ColumnWidth = 12;
}
yatay++;
}
}

[/cc]

Gerekli kod açıklamaları kod içinde mevcut. Fakat birkaç şey söylemeden yazımı sonlandırmak istemiyorum. Burada kod içinde Excel dosyasını oluşturduktan sonra ilk önce kolon başlıklarını girmemiz gerekiyor. Bunları girmezsek kolon başlıkları haliyle excel e aktarılmaz. Foreach döngülerini kullanarak Excel dosyamıza yazdırdık.

ws.Columns.ColumnWidth döngü içine eklememizin sebebi, normalde Excel’in standart kolon genişliğine göre yazdıracak kolon içindeki uzun veriler Excel içinde genişletmeden gözükmeyecektir. Yada ws.Columns.AutoFit(); ile kolon içindeki verinin genişliğine göre otomatik Excel kolonunu genişletebilirsiniz.

Yaptığımız örneğin kodlarını buradan indirebilirsiniz.
[wpdm_file id=3]

“Listviewdeki veriyi excel e aktarma” üzerine 2 yorum

  1. Hocam İyi Çalışmalar ben sizden şöyle bir yardım istiyorum. Excel deki verileri program çalıştığı gibi listviewe dökülsün daha sonra ben textboxlar sayesinde son satıra bilgi ekleyeyim yapılabilirmi teşekkürler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir