5 Ocak 2018

C# Excel Okuma Yazma İşlemleri



1. https://www.nuget.org/packages/Microsoft.Office.Interop.Excel
adresinde yer alan dll'i ManageNuGet ile ya da Package Manager Console ile projeye dahil edin.

//OKUMA İŞLEMİ
var excelApp = new Excel.Application();
var path = "c:\\dosyayolu"

//excel aç
var workBook = excelApp.Workbooks.Open(path);
//1. sayfayı seç
Excel._Worksheet workSheet = workBook.Sheets[1];
//kullanılan alanlar
Excel.Range excelRange = workSheet.UsedRange;

//kullanılan satır sayısı
int rowCount = excelRange.Rows.Count;

//kullanılan sütun sayısı
int colCount = excelRange.Columns.Count;




bool isCorrectFormat = true;
//Excel için kendi formatımımız var. Eğer başlıklar yoksa hatalı format.
//"A" yerine sayı da yazabiliriz. 1.sütun..Cells[1, 1]
isCorrectFormat &= excelRange.Cells[1, "A"] != null & excelRange.Cells[1, "A"].Value2 != null;
isCorrectFormat &= excelRange.Cells[1, "B"] != null & excelRange.Cells[1, "B"].Value2 != null;
isCorrectFormat &= excelRange.Cells[1, "C"] != null & excelRange.Cells[1, "C"].Value2 != null;
isCorrectFormat &= excelRange.Cells[1, "D"] != null & excelRange.Cells[1, "D"].Value2 != null;
isCorrectFormat &= excelRange.Cells[1, "E"] != null & excelRange.Cells[1, "E"].Value2 != null;
if (!isCorrectFormat)
 throw new Exception("Hatalı Excel Formatı");

//Başlıklar doğru şekilde mi yazıldı.
isCorrectFormat &= excelRange.Cells[1, "A"].Value2.ToString() == "Ad Soyad";
isCorrectFormat &= excelRange.Cells[1, "B"].Value2.ToString() == "Telefon 1";
isCorrectFormat &= excelRange.Cells[1, "C"].Value2.ToString() == "Telefon 2";
isCorrectFormat &= excelRange.Cells[1, "D"].Value2.ToString() == "Telefon 3";
isCorrectFormat &= excelRange.Cells[1, "E"].Value2.ToString() == "E-Posta";

//Format doğru değilse excel den çık.
if (!isCorrectFormat)
{
 GC.Collect();
 GC.WaitForPendingFinalizers();


  workBook.Close();
 Marshal.ReleaseComObject(excelRange);
 Marshal.ReleaseComObject(workSheet);
 Marshal.ReleaseComObject(workBook);
 excelApp.Quit();

  Marshal.ReleaseComObject(excelApp);
 throw new Exception("Hatalı Excel Formatı");
}
//2 satırdan itibaren okumaya başla.
//Burada Rehber kendi oluşturduğum bir sınıf.
for (int i = 2; i <= rowCount; i++)
{

  var rehber = new Rehber()
 {
  AdSoyad = (excelRange.Cells[i, "A"] != null & excelRange.Cells[i, "A"].Value2 != null) ? excelRange.Cells[i, "A"].Value2.ToString() : "",
  Telefon1 = (excelRange.Cells[i, "B"] != null & excelRange.Cells[i, "B"].Value2 != null) ? excelRange.Cells[i, "B"].Value2.ToString() : "",
  Telefon2 = (excelRange.Cells[i, "C"] != null & excelRange.Cells[i, "C"].Value2 != null) ? excelRange.Cells[i, "C"].Value2.ToString() : "",
  Telefon3 = (excelRange.Cells[i, "D"] != null & excelRange.Cells[i, "D"].Value2 != null) ? excelRange.Cells[i, "D"].Value2.ToString() : "",
  EMail = (excelRange.Cells[i, "E"] != null & excelRange.Cells[i, "E"].Value2 != null) ? excelRange.Cells[i, "E"].Value2.ToString() : "",
 };
 mw.Rehber.Add(rehber);
}
//Tüm işlemler bitti kapat.
GC.Collect();
GC.WaitForPendingFinalizers();


workBook.Close();
Marshal.ReleaseComObject(excelRange);
Marshal.ReleaseComObject(workSheet);
Marshal.ReleaseComObject(workBook);
excelApp.Quit();

Marshal.ReleaseComObject(excelApp);
//YAZMA İŞLEMİ 
path = "C:\\dosyayolu"
if (!string.IsNullOrWhiteSpace(path))
{
 var excelApp = new Excel.Application();
 var workBook = excelApp.Workbooks.Add();
 Excel._Worksheet workSheet = (Excel.Worksheet)excelApp.ActiveSheet;
 workSheet.Cells[1, "A"] = "Ad Soyad";
 workSheet.Cells[1, "B"] = "Telefon 1";
 workSheet.Cells[1, "C"] = "Telefon 2";
 workSheet.Cells[1, "D"] = "Telefon 3";
 workSheet.Cells[1, "E"] = "E-Posta";

 var row = 1;
 foreach (var kisi in telefonRehberi)
 {
  row++;
  workSheet.Cells[row, "A"] = kisi.AdSoyad;
  workSheet.Cells[row, "B"] = kisi.Telefon1;
  workSheet.Cells[row, "C"] = kisi.Telefon2;
  workSheet.Cells[row, "D"] = kisi.Telefon3;
  workSheet.Cells[row, "E"] = kisi.EMail;
 }
 for (int i = 1; i < 6; i++)
 {
  ((Excel.Range)workSheet.Columns[i]).AutoFit();
 }


 workBook.SaveAs(path);
 workBook.Close(true);
 excelApp.Quit();
 Marshal.ReleaseComObject(workSheet);
 Marshal.ReleaseComObject(workBook);
 Marshal.ReleaseComObject(excelApp);
}
Tamamlanmış Proje Aşağıdaki Linkten İndirilebilir
https://drive.google.com/file/d/11dhNkEYm-leQJLViF4uNzBUf0V-rUGtB/view?usp=sharing