Asp.NET ile Excel'den Veri Okumak
Bundan önceki makalem de (Oracle PL SQL'de Dizi Kullanımı) ile ilgili bilgiler vermiştik şimdide bir sonraki makalemize geçebilmek için bir geçiş makalesi yazma ihtiyacı duydum.
Bir önceki makalemde sizlere "Asp.Net ile Bir Excel dosyasının içeriğini açıp verileri Asp.Net tarafında '#' operatörü ile birleştirdikten sonra bu değerleri bir Stored Procedure vasıtasıyla Tablomuza INSERT eden bir proje yapıp bunları sizin le paylaşacağım" demiştim.Bunun için bu makalemizde Asp.Net'de Excel Upload nasıl yapılır Excel'den veriler okunup .Net nesnelerine nasıl yerleştirirlir bunları sizinle paylaşacağım.
Excel Upload için Aşağıdaki gibi bir ekran tasarımı yapalım.
Bu ufak proje'de kullanıcının seçtiği excel dosyasını önce Sunucuya yükleyeceğiz sonra sunucudaki bu excel dosyasından Excel verilerini okuyup bu verileri bir DataTable nesnesine yerleştireceğiz ve bu excel dosyasıyla işimiz bittiği için bu dosyayı sunucudan sileceğiz.:Bu işlemden sonra DataTable'daki verileri DataGrid nesnesi üzerinde görüntüleyeceğiz.
Excel dosyasını sunucuya yüklemek için aşağıdaki gibi bir fonksiyon yazmalıyız.
#region Excel
Dosyasını Server a Alma
private string
ExcelUpload() //Excel
dosyasının bir kopyası serverda ki ExcelUpload klasörüne alınıyor
{
string filefolder = Server.MapPath("ExcelUpload/");
string filename = System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName);
string filepath = filefolder + filename;
try
{
if (!System.IO.Directory.Exists(filefolder))
{
System.IO.Directory.CreateDirectory(filefolder);
}
FileUpload1.PostedFile.SaveAs(filepath);
}
catch (Exception
exc)
{
Response.Write("Hata : " +
exc.Message);
}
return filepath;
}
#endregion
|
Yukarıdaki kod parçasıyla Excel dosyamızı sunucuya yükledikten sonra sıra geldi bu dosya içerisindeki verileri Okuyup bir DataTable nesnesine doldurmaya.
Excel'deki kolon yapısını düşündüğümüzde bizim database tablolarımızdan bir farkı olmadığını görmüşsünüzdür.Excel içerisindeki verileri bir database tablosu içerisindeki veriler gibi düşünebiliriz ve bir tablodan veri çekebilmek için ilgi veritabanına bir Connection oluşturup bir select cümleciği çalıştırmanız gerekmektedir.Bizde excel'den veri çekebilmek için buna benzer bir yapı kullanacağız
Aşağıdaki kod bloğu ile Excel dosyasından veriyi okuyup , bu veriyi DataTable nesnemize yerleştirdikten sonra sunucudan bu excel dosyasını silebiliriz.
#region Excel
Dosyasından Satırları oku
private System.Data.DataTable
ReadFromExcelData()
{
System.Data.DataTable dTableExcel = null;
string filePath = ExcelUpload();
try
{
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=" + filePath + ";Extended
Properties=Excel 12.0;";
System.Data.DataSet dSetExcel = new System.Data.DataSet();
System.Data.OleDb.OleDbDataAdapter da
= new System.Data.OleDb.OleDbDataAdapter("SELECT *
FROM [Sheet1$]", strConn);
da.Fill(dSetExcel);
//Upload edilen excel dosyasını serverdan sil...
System.IO.File.Delete(filePath);
//Excel'de bulunan datalar .Net tarafında bir Datatable'a
alındı
dTableExcel = dSetExcel.Tables[0];
return dTableExcel;
}
catch (Exception
exc)
{
Response.Write("Hata : " +
exc.Message);
return dTableExcel;
}
}
#endregion
|
Excel dosyasını Server'a yükleyen ExcelUpload(); ve bu dosyadan veri okuyan ReadFromExcelData() isimli fonksiyonlarımız'ı yazdığımıza göre artık bu fonksiyonları tetikleyebiliriz.Bunun için tasarladığımız ekrandaki "Yükle" butonunun "Click" event'ına aşağıdaki kodları bağlamalıyız.
protected void
btnUpload_Click(object sender, EventArgs e)
{
//Excel'deki Satıları Oku ve Bunları Al
System.Data.DataTable dt =
ReadFromExcelData();
//Gelen değeri daha sonra kullanılmak üzere bir Session içine alalım ve işimiz bittikten sonra bu session'ı kill etmeyi unutmayalım
if (dt != null) //Excel dosyası boş değilse bunları gridde göster
{
DataGrid1.DataSource = dt; //Dataları grid'e
datakaynağı olarak ver
DataGrid1.DataBind(); //Dataları Gride Bağla
}
}
|
Yükle butonunumuzun Click Eventı 'da hazır olduğuna göre artık projemizi Build edip Çalıştırırabiliriz ve test işlemi için aşağıdakine benzer bir Excel dosyası oluşturalım.
.
Excel dosyamızı hazırladıktan sonra ekranımızı açıp ekrandan FileUpload nesnesinin "BROWSE" butonuna basıyoruz ve açılan ekrandan yeni oluşturduğumuz Excel dosyasını seçiyoruz ve Ekranımızdaki "Yükle" butonuna basıyoruz ve Excel 'deki dataların Ekrana gelmesi için ufak bir süre bekliyoruz.
Ekran görüntüsü;
Hazırlamış Olduğunuz bu yöntemleri projelerimde kullanabilir miyim
YanıtlaSilEseh merhaba, tabiki kullanabilirsin herhangi bir sıkıntı olursa yardımcı olmaya çalışırım.
YanıtlaSilNasıl İrtibat kurabiliriz sizenle musaagac@hotmail.com
YanıtlaSilMurat bey exceli dışarı export edince excel programıyla açmaya çalıştığımızda uzantıyla içeriğin farklı olduğuyla alakalı uyarı veriyor başlangıçta.. Bu uyarının çıkmaması için ne yapabiliriz ?
YanıtlaSil