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 ,

[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.

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 🙂


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.