C# Excel İşlemleri

Merhabalar ,

Bu yazımda C# ta Excel işlemleri okuma yazma v.s. ile ilgili örneklerle açıklamaya çalışacağım ,

Örnek Uygulamaya Github Hesabımdan ulaşabilirsiniz : https://github.com/salihseker/C-Excel-lemleri

Excel işlemleri için EPPlus (OfficeOpenXml) ddl ini kullanacağız , bu dll açık kaynak olduğundan projemizi farklı sunucularda veya bilgisayarlarda kullanacağımız zaman dll ile birlikte projeyi taşıdğımızda problem olmayacaktır ,

screenshot_7

[raw] [/raw]

Ayrıca Excel işlemleri için Microsof Office Kurulu bilgisayarlarda “Microsoft Excel 16.0 Object Library”  dll i bulunmkatadır bu dll ile de excel işlemleri yapılabilir fakat tavsiye etmiyorum , bu dll i kullanıp işlemlerinizi yaptığınızda uygulamanızın çalışacağı bilgisayarlarda Office kurulu olması gerekecektir , bu da çeşitli problemlere yol açabilir , bu nedenle EPPlus dll ini kullanmanızı tavsiye ederim.

screenshot_8

Projemize EPPlus dll ini ekledikten sonra using kısmına OfficeOpenXml kütüphanesini ekliyoruz.

//

using OfficeOpenXml;

//

Excel Oluşturma :

//

private static void ExcelOlustur() {
            string strFileName = @"D:\excelOlustur.xlsx";
            FileInfo exc_file = new FileInfo(strFileName);
            ExcelPackage pck = new ExcelPackage();
            ExcelWorkbook wb = pck.Workbook;//Excel Dosyası oluşturulur.
            ExcelWorksheet worksheet = pck.Workbook.Worksheets.Add("1.Sayfa");
            pck.SaveAs(exc_file);
            pck.Dispose();

        }


//

[raw] [/raw]

Excel Okuma :

//

private static void ExcelOku()
        {
            string strFileName = @"D:\excelOlustur.xlsx";//Okunacak excelin dosya yolu.
            FileInfo exc_file = new FileInfo(strFileName);
            ExcelPackage pck = new ExcelPackage(exc_file);
            ExcelWorkbook wb = pck.Workbook;//Excel Dosyası oluşturulur.
            Console.WriteLine("Excel Sayfa Sayısı : " + wb.Worksheets.Count());
            foreach (var item in wb.Worksheets)
            {
                Console.WriteLine("Sayfa İsmi : " + item.Name);
            }

            pck.Dispose();
            Console.ReadLine();

        }


//

Excel Hücreleri (Cells) okuma – yazma:

//

//Harf veya index olarak satır ve sütun belirtilerek kullanılır.
string deger = worksheet.Cells["A2:H1"].ToString(); //Farklı bir örnek kullanım.
worksheet.Cells[1, 1].Value = "ID";//worksheet.Cells[satır , sütun] , excel hücresi.

//

Excel hücrelerine datayı hangi formatta ekler iseniz hüçrenin biçimi o olacaktır , int eklerseniz sayısal , string eklerseniz metin olacaktır , bu nedenle sayısal işlemler yapılacak hücreler için bu duruma dikkat ediniz.

[raw] [/raw]

Excel İşlemleri:

//www.salihseker.com - Salih ŞEKER

private static void ExcelIslemleri()
        {
            string strFileName = @"D:\excelIslemleri.xlsx";
            FileInfo exc_file = new FileInfo(strFileName);//Excelimizin kayıt olacağı yolu belirtiyoruz.

            //ExcelPackage pck = new ExcelPackage(@"D:\excelIslemleri.xlsx"); mevcut exceli okumak için kullanılır.
            ExcelPackage pck = new ExcelPackage();
            ExcelWorkbook wb = pck.Workbook;//Excel Dosyası oluşturulur.
            ExcelWorksheet worksheet = pck.Workbook.Worksheets.Add("ilkSayfa");//Excel için sayfa oluşturulur.
            ExcelWorksheet worksheet2 = pck.Workbook.Worksheets.Add("ikiniciSayfa");
            ExcelWorksheet worksheet3 = pck.Workbook.Worksheets.Add("ucuncuSayfa");

            worksheet2.Hidden = eWorkSheetHidden.Hidden;//eWorkSheetHidden.Visible , eWorkSheetHidden.VeryHidden // sayfayı gizleme açma işlemleri.

            //Stil işlemleri (Sayfaların stilleri için örnek ayarlar)            
            //worksheet.TabColor = Color.Blue;
            //worksheet.DefaultRowHeight = 12;
            //worksheet.HeaderFooter.FirstFooter.LeftAlignedText = string.Format("Generated: {0}", DateTime.Now.ToShortDateString());
            //worksheet.Row(1).Height = 15;
            //worksheet.Row(2).Height = 15;

            // Excel Sayfa Başlıkları Ekleme
            // Excel İlk Satırlar 
            //string deger = worksheet.Cells["A2:H1"].ToString(); //Farklı bir örnek kullanım.
            worksheet.Cells[1, 1].Value = "ID";//worksheet.Cells[satır , sütun] , excel hücresi. 
            worksheet.Cells[1, 2].Value = "Ad";
            worksheet.Cells[1, 3].Value = "Soyad";

            // Add the second row of header data
            worksheet.Cells[2, 1].Value = 100;
            worksheet.Cells[2, 2].Value = "Salih";
            worksheet.Cells[2, 3].Value = "ŞEKER";
            worksheet.Cells[2, 4].Value = 25;

            YorumEkle(worksheet , 1 ,1,"test yorum" , "Salih");
            //ResimEkle(worksheet, 3, 1, @"D:\resim1.jpg");

            worksheet.Cells[2, 5].Formula = "Sum(A2:D2)";//Excel Formulleri eklemek için 


            //ExcelRange range = Excelde belirli bir alana işlem uygulayacağımız zaman kullanılır.
            //ExcelRange range = worksheet.Cells[Baslangıç Satırı, Baslangıç Sütunu, Bitiş Satırı, Bitiş Sütunu]
            //using (ExcelRange range = worksheet.Cells[1, 1, 1, 2])
            //{
            //    range.Style.Font.Bold = true;
            //    range.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
            //    range.Style.Fill.BackgroundColor.SetColor(Color.Black);
            //    range.Style.Font.Color.SetColor(Color.WhiteSmoke);
            //    range.Style.ShrinkToFit = false;
            //}

            // Sütunları İçeriğe göre sınırlandırmak
            worksheet.Column(1).AutoFit();
            worksheet.Column(2).AutoFit();
            worksheet.Column(3).AutoFit();

            //Excel Dökümanının Özellikleri ekelmek istersek
            pck.Workbook.Properties.Title = "Kullanıcılar";//Başlık
            pck.Workbook.Properties.Author = "Salih ŞEKER";//Yazar
            pck.Workbook.Properties.Company = "Sugar CORP";//Şirket


            pck.SaveAs(exc_file);
            pck.Dispose();
        }


//

[raw] [/raw]

Excel in bir sayfasına DataTable daki tablodan gelen verileri eklemek için kendim oluşturduğum bir fonksiyon ,

DataTabel to Excel

SheetDoldur:

//www.salihseker.com - Salih ŞEKER

//Excelde belirtilen sayfaya datatble daki tablo yu eklemek için kullnılan method. 
        private static void SheetDoldur(ExcelWorksheet worksheet, DataTable Table, int baslangicSatiri, int baslangicSutunu, string type = "")
        {


            int clCount = Table.Columns.Count;
            int rwCount = Table.Rows.Count;
            for (int i = baslangicSatiri; i < rwCount + baslangicSatiri; i++)
            {
                for (int j = baslangicSutunu; j < clCount + baslangicSutunu; j++)
                {

                    if (!string.IsNullOrEmpty(Table.Rows[i - baslangicSatiri][j - baslangicSutunu].ToString()) && IsNumeric(Table.Rows[i - baslangicSatiri][j - baslangicSutunu].ToString()) && Table.Rows[i - baslangicSatiri][j - baslangicSutunu].ToString().Length < 10)
                        worksheet.Cells[i, j].Value = Convert.ToDouble(Table.Rows[i - baslangicSatiri][j - baslangicSutunu]);
                    else
                        worksheet.Cells[i, j].Value = Table.Rows[i - baslangicSatiri][j - baslangicSutunu];

                }


            }

        }

        //sayısal değer olup olmadığı kontrol etmek için oluşturulmuş method
        static bool IsNumeric(string text)
        {
            foreach (char chr in text)
            {
                if (!Char.IsNumber(chr) && chr != '.' && chr != ',') return false;
            }
            return true;
        }
    }

//

Excel Sayfa Ekleme:

//

ExcelWorksheet worksheet = pck.Workbook.Worksheets.Add("ilkSayfa");//Excel için sayfa oluşturulur.

//

Excel Sayfa Gizleme , Görünür yapma:

//

worksheet2.Hidden = eWorkSheetHidden.Hidden;
//eWorkSheetHidden.Visible , eWorkSheetHidden.VeryHidden // sayfayı gizleme açma işlemleri.


//

Excel Formül Ekleme (Formula) : 

//

worksheet.Cells[2, 5].Formula = "Sum(A2:D2)";//Excel Formulleri eklemek için 

//

[raw] [/raw]

Excel Belirili bir alanı seçme ve işlem uygulama (Range):

//

            //ExcelRange range = Excelde belirli bir alana işlem uygulayacağımız zaman kullanılır.
            //ExcelRange range = worksheet.Cells[Baslangıç Satırı, Baslangıç Sütunu, Bitiş Satırı, Bitiş Sütunu]
            using (ExcelRange range = worksheet.Cells[1, 1, 1, 2])
            {
                range.Style.Font.Bold = true;
                range.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                range.Style.Fill.BackgroundColor.SetColor(Color.Black);
                range.Style.Font.Color.SetColor(Color.WhiteSmoke);
                range.Style.ShrinkToFit = false;
            }

//

Excel Doküman Özellikleri:

//

//Excel Dökümanının Özellikleri ekelmek istersek

pck.Workbook.Properties.Title = "Kullanıcılar";//Başlık
pck.Workbook.Properties.Author = "Salih ŞEKER";//Yazar
pck.Workbook.Properties.Company = "Sugar CORP";//Şirket

//

Excel Hücreye Yorum Ekleme:

//

 //Excel Hücresine Yorum ekleme
        private static void YorumEkle(ExcelWorksheet ws, int sutunIndex, int satirIndex, string yorum, string yazar)
        {
            //Adding a comment to a Cell
            var commentCell = ws.Cells[satirIndex, sutunIndex];
            commentCell.AddComment(yorum, yazar);
        }

//

Excel Sayfaya Resim Ekleme:

//

//ResimEkle(worksheet, 3, 1, @"D:\resim1.jpg");

private static void ResimEkle(ExcelWorksheet ws, int sutunIndex, int satirIndex, string resimYol)
        {
            //How to Add a Image using EP Plus
            Bitmap image = new Bitmap(resimYol);
            ExcelPicture picture = null;
            if (image != null)
            {
                picture = ws.Drawings.AddPicture("pic" + satirIndex.ToString() + sutunIndex.ToString(), image);
                picture.From.Column = sutunIndex;
                picture.From.Row = satirIndex;
                picture.SetSize(100, 100);
            }
        }

//

Anlatacaklarım şimdilik bu kadar umarım yardımcı olur , faydası dokunur ise lütfen yorum bırakınız 🙂

İyi çalışmalar – Salih ŞEKER 🙂

 

Print Friendly, PDF & Email

You may also like...

1 Response

  1. Kadir Turan dedi ki:

    Salih Bey Merhaba,
    Tam olarak aradığım dll ve kullanım örnekleri için de ayrıca teşekkür ederim.
    İyi Çalışmalar diliyorum.

Bir cevap yazın