c# – ExcelDataReader ile Excel’den veri okuma

24 May

Merhaba arkadaşlar,
Daha önce sizlere burada Excelden veri okuma işlemini nasıl yapabiliriz anlatmıştım. Burada anlattığım yöntem microsoft office kütüphaneleri ile yapılış yöntemiydi.

Ancak bu yöntem ile projeyi web’te yayınlamak istediğimde şöyle bir hata aldım ‘Exception from HRESULT: 0x80040154’ Bu hatanın sebebi sunucumda office kurulu olmamasıydı. Biraz araştırma sonrasında ExcelDataReader kütüphanesini buldum. Bu kütüphane ile sunucumda office olmadan excelden dosyaları okuyabildim.

Şimdi bu kütüphanenin kullanımına geçelim.
Örnek console uygulaması açıp aşağıda ki örneği yapabilirsiniz. Daha sonra bunu web projelerinizde de aynı şekilde kullanabilirsiniz.

Package Manager Console açın ve şunu yazarak projeye indirin;

Install-Package ExcelDataReader

Daha sonra aşağıda ki console uygulamasını bireberi uygulayıp çalıştırabilirsiniz.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Excel;
using System.Data;

namespace ExcelConverter
{
    class Program
    {
        static void Main(string[] args)
        {
            //Dosyanın okunacağı dizin
            string filePath = @"C:\Users\Semih\Documents\Test.xlsx";

            //Dosyayı okuyacağımı ve gerekli izinlerin ayarlanması.
            FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);
            IExcelDataReader excelReader;
            List<string> liste = new List<string>();
            int counter = 0;

            //Gönderdiğim dosya xls'mi xlsx formatında mı kontrol ediliyor.
            if (Path.GetExtension(filePath).ToUpper() == ".XLS")
            {
                //Reading from a binary Excel file ('97-2003 format; *.xls)
                excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
            }
            else
            {
                //Reading from a OpenXml Excel file (2007 format; *.xlsx)
                excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
            }

            //Datasete atarken ilk satırın başlık olacağını belirtiyor.
            excelReader.IsFirstRowAsColumnNames = true;
            DataSet result = excelReader.AsDataSet();

            //Veriler okunmaya başlıyor.
            while (excelReader.Read())
            {
                counter++;

                //ilk satır başlık olduğu için 2.satırdan okumaya başlıyorum.
                if (counter > 1)
                {
                    liste.Add("Ad =" + excelReader.GetString(0));
                    liste.Add("Soyad =" + excelReader.GetString(1));
                }
            }
            
            //Okuma bitiriliyor.
            excelReader.Close();
            //Veriler ekrana basılıyor.
            foreach (var item in liste)
            {
                Console.WriteLine(item);
            }

            Console.ReadKey();
        }
    }
}

İşlemler bu kadar. Kolay gelsin iyi çalışmalar.

Bir Cevap Yazın