C# excel veri okutmak(read)

Programlama dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
spectacuLar
Kilobyte2
Kilobyte2
Mesajlar: 370
Kayıt: 21 Eyl 2006, 18:04
cinsiyet: Erkek

C# excel veri okutmak(read)

Mesaj gönderen spectacuLar » 26 Eki 2007, 21:19

Word, Excel gibi COM yetenegi olan uygulamalara C# ile ulasmak ve islem yapmak mümkündür.

Asagıdaki uygulamada sabit diskte kayıtlı bir Excel belgesini okuyup içerigini Listview ile gösterecegiz. Temel baglantı islemlerini ve mantıgını gördükten sonra bu projeyi gelistirip daha kullanıslı uygulamalar yazabilirsiniz.


Önce sadece bir adet çalısma sayfasına sahip ve bizim için önemli 3 tane sütuna sahip bir Excel belgesi olusturalım.
  • Resim
Visual Studio 2005 ile bir Windows projesi olusturalım.
  • Resim
Toolboxtan projemiz üzerine bir Listview, bir Buttun ve bir OpenFileDialog sürükleyelim. Formun görünümü asagıdaki gibi olacaktır.
  • Resim
simdi Solution Explorer penceresinde Refences üzerine sag tıklayarak Add Reference (Referans Ekle) seçelim.
  • Resim

Açılan penceredeki COM sekmesinden Microsof Excel 11.0 Object Library bilesenini seçip OK dedigimizde projemizin bin klasörü altına Inteop.Excel.dll ve Interop.Microsoft.Office.Core.dll adlı dll dosyalarının geldigini göreceksiniz.
  • Resim
simdi artık Excel nesnemizi olusturalım.

private Excel.Application ExcelNesnesi = null;

Excel açıldı ve formumuzun yapıcısında Excel Application referansı alındı. Excel açılmaz ya da problem olursa diye bir kontrol blogu yazalım.

Kod: Tümünü seç

       public Form1()

        {

            InitializeComponent();

            ExcelNesnesi = new Excel.Application();

 

            if (ExcelNesnesi == null)

            {

                MessageBox.Show("Problem! Dosya Açılamadı.");

                System.Windows.Forms.Application.Exit();

            }
simdi Excel belgesi açıldı ve veri okuma islemi yapabiliriz.


Form üzerindeki butonun click olayına belgenin açılması ve verilerin okunması için gerekli kodu yazalım.

Kod: Tümünü seç

private void button1_Click(object sender, EventArgs e)

{

    this.openFileDialog1.FileName = "*.xls";

    if (this.openFileDialog1.ShowDialog() == DialogResult.OK)

    {

        Excel.Workbook theWorkbook =

           ExcelNesnesi.Workbooks.Open(

             openFileDialog1.FileName, 

             Type.Missing, 

             Type.Missing, 

             Type.Missing, 

             Type.Missing, 

             Type.Missing, 

             Type.Missing, 

             Type.Missing, 

             Type.Missing, 

             Type.Missing, 

             Type.Missing, 

             Type.Missing, 

             Type.Missing, 

             Type.Missing, 

             Type.Missing);

 

      

        Excel.Sheets sheets = theWorkbook.Worksheets;

 

        Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1);

 

        for (int i = 1; i <= 10; i++)

        {

            Excel.Range range = 

                worksheet.get_Range("A" + i.ToString(), "C" + i.ToString());

            System.Array myvalues = (System.Array)range.Cells.Value2;

            string[] strArray = ConvertToStringArray(myvalues);

            listView1.Items.Add(new ListViewItem(strArray));

        }

    }

}
openFileDialog1 ile xls uzantılı bir belge aldık. Daha sonra bir Excel Workbook olusturarak Excel belgemizi açıp bu nesneye transfer ettik.

ExcelNesnesi.Workbooks.Open yöntemi parametre olarak sadece dosya ismini almaz. Object Borwser ile incelerseniz dosya ismi ile birlikte 15 tane parametre alır ama bize su anda sadece dosya ismi alım digerlerine Type.Missing yazarak bos bıraktık. 15 parametremizi de yönteme geçtik.

Workbook nesnemiz içerisindeki sheetleri sheets nesnesine transfer ettik.

worksheet adlı nesnemize de kısa bir örnek uygulama yaptıgımız için açtıgımız excel belgesinin çalısma sayfaları arasından sadece 1.çalısma sayfasını aldık.

Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1);

Yine kısa bir örnek yaptıgımız için A, B ve C sütunlarından 10 tane satır okuduk.

myvalues adlı bir diziye 10X3 lük bir matris kadar veriyi almıs olduk.

Bu arada myvalues dizisini yazdıgımız ConvertToStringArray yöntemi yardımıyla strArray adlı string dizisine dönüstürdük.

Kod: Tümünü seç

string[] ConvertToStringArray(System.Array values)

{

    string[] theArray = new string[values.Length];

    for (int i = 1; i <= values.Length; i++)

    {

        if (values.GetValue(1, i) == null)

            theArray[i - 1] = "";

        else

            theArray[i - 1] = (string)values.GetValue(1, i).ToString();

    }
 
    return theArray;

}

Listview1 bilesenimize de bu string dizisini ekledik. Ekranda verilerimiz göründü. Tabiki bu sekilde string dizisi olarak verileri elde ettikten sonra ihtiyacımız dogrultusunda her türlü kullanabiliriz.

hzr =spectacuLar.



Cevapla