C#'ta Excel Dosyaları Oluşturma
Excel dosyaları oluşturmak ve çalışmak, C# ile raporlama araçları, veri dışarı aktarmalar veya kullanıcı girdi arayüzleri inşa eden herhangi bir geliştirici için hayati bir beceridir. Bu makalede, Tim Corey'nin videosundaki "Creating Excel files in C#" detaylı incelemesine dalıyoruz; O, bir Excel dosyası oluşturmayı, biçimlendirmeyi ve hatta EPPlus kütüphanesi kullanarak verileri geri okumayı gösteriyor.
İster bir List ile yeni bir Excel çalışma kitabı oluşturmak, ister Excel çalışma sayfası hücrelerini biçimlendirmek ya da yapılandırılmış verileri uygulamanıza geri okumak isteyin, Tim'in örneği, C#'ta Excel dosya oluşturmanın temel unsurlarını kapsayan pratik bir öğretici olarak hizmet eder.
Tim'in videosuna referansla adım adım inceleyelim.
Giriş: Neden C# İçinde Excel Kullanmalıyız?
Tim, Microsoft Excel'in iş dünyasında en önemli araçlardan biri olduğunu açıklayarak başlar. Excel dosyaları kullanıcı dostu, son derece çok yönlüdür ve verileri temsil etmek için mükemmeldir. C# içinde Excel dosyaları oluşturmanın, karmaşık raporlama çözümlerinin yerine kullanılabileceğini ve Excel'i varsayılan raporlama aracınız yapabileceğini vurgular.
Hedef: C# kullanarak bir Excel uygulaması oluşturmak, verilerle doldurmak, bazı biçimlendirmeler uygulamak ve ardından o Excel dosyasından veri okumak.
Solution Explorer'da Projeyi Ayarlama
Tim Visual Studio 2019'u açar, bir Konsol Uygulaması (.NET Core) seçer ve çözümü ExcelDemoApp olarak adlandırır. Bir konsol uygulaması, tamamen Excel ile ilgili kodlara odaklanmak için temiz ve dikkat dağıtıcı olmayan bir ortam sağlar.
Basit nesne örneklemesi gibi C# 9 özelliklerinden faydalanmak için Hedef Çerçeveyi .NET 5.0'a yükseltir.
NuGet Paketlerinden EPPlus Eklemek
Bir Excel çalışma kitabı oluşturmak için Tim, NuGet Paket Yöneticisi aracılığıyla EPPlus paketini yükler. EPPlus, .xlsx dosyalarıyla (Open XML) çalışan bir Excel kütüphanesidir ve grafikler, tablolar, stiller ve formüller gibi tam Excel işlevselliğini destekler – MS Office veya Excel Interop gerekmeden.
Not: EPPlus ticari olmayan kullanım için ücretsizdir, ancak ticari uygulamalar için lisans gerektirir.
Zaman hata vermemek için gerekli ticari olmayan lisans kabultü satırını koduna kopyalar ve gerekli using OfficeOpenXml; ifadesini ekler.
Excel Dosya Yolunu Tanımlama
System.IO.FileInfo kullanarak, Tim sabit kodlanmış bir dosya yolu ayarlar:
var file = new FileInfo(@"C:\demos\youtubedemo.xlsx");var file = new FileInfo(@"C:\demos\youtubedemo.xlsx");Bu dosya başlangıçta mevcut değil – program tarafından dinamik olarak oluşturulacaktır.
Veri Modeli Oluşturma
Excel tablolarını doldurmak için Tim, şu özelliklere sahip basit bir PersonModel sınıfı tanımlar:
int Id
string FirstName
- string LastName
Tim Corey, Sue Storm ve Jane Smith gibi örnek verilerle dolu bir List
Verileri Asenkron Olarak Excel Dosyasina Kaydetme
Modern geliştirmede, UI iş parçacığını engellemek kabul edilemez. Bu nedenle, Tim bir asenkron yöntem tanımlar:
static async Task SaveExcelFile(List<PersonModel> people, FileInfo file)static async Task SaveExcelFile(List<PersonModel> people, FileInfo file)Excel'e yazmadan önce, dosyanın var olup olmadığını kontrol eder ve adlandırma çakışmalarını önlemek için onu siler.
if (file.Exists) file.Delete();if (file.Exists) file.Delete();Excel Calisma Tablosunu Oluşturma ve Biçimlendirme
Tim, doğru bir şekilde imha edilmesini sağlamak için bir using bloğu içinde EPPlus ExcelPackage nesnesini kullanır:
using var package = new ExcelPackage(file);using var package = new ExcelPackage(file);Çalışma kitabına yeni bir çalışma tablosu ekler:
var ws = package.Workbook.Worksheets.Add("MainReport");var ws = package.Workbook.Worksheets.Add("MainReport");Veri Yukleme
LoadFromCollection'i kullanarak, kişiler listesini "A2" hücresinden başlayarak yerleştirir:
ws.Cells["A2"].LoadFromCollection(people, true);ws.Cells["A2"].LoadFromCollection(people, true);- true, başlıkların dahil edilmesini sağlar ("Id", "FirstName", "LastName" gibi).
Daha sonra, AutoFitColumns() otomatik olarak sütun genişliklerini ayarlar:
ws.Cells[ws.Dimension.Address].AutoFitColumns();ws.Cells[ws.Dimension.Address].AutoFitColumns();Son olarak, Excel dosyasini kaydeder:
await package.SaveAsync();await package.SaveAsync();Excel Hucrelerini ve Satirlarini Stilleme
Excel dosyasını daha okunabilir hale getirmek için Tim, stil uygulamayı gösterir:
Baslik Satiri
ws.Cells["A1"].Value = "Our Cool Report";
ws.Cells["A1:C1"].Merge = true; ws.Row(1).Style.Font.Size = 24;
ws.Row(1).Style.Font.Color.SetColor(Color.Blue);
ws.Column(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;ws.Cells["A1"].Value = "Our Cool Report";
ws.Cells["A1:C1"].Merge = true; ws.Row(1).Style.Font.Size = 24;
ws.Row(1).Style.Font.Color.SetColor(Color.Blue);
ws.Column(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;Baslik Satiri
ws.Row(2).Style.Font.Bold = true;
ws.Row(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;ws.Row(2).Style.Font.Bold = true;
ws.Row(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;Özel Sütun Genişliği
ws.Column(3).Width = 20;ws.Column(3).Width = 20;Bu bölüm, aşağıdaki gibi gelişmiş biçimlendirme işlemlerini göstermektedir:
Birleştirilmiş hücreler
Yazı tipi stili
Arka plan renkleri
Satır/sütun hizalaması
- Genişlik ayarlamaları
Bunlar, tipik MS Office Excel formatındaki özellikleri taklit eder.
C# ile Bir Excel Dosyasindan Veri Okuma
Şimdi verileri Excel'e yazdık, sırada C# içine geri okuma var.
Tim yöntemi tanıtır:
static async Task<List<PersonModel>> LoadExcelFile(FileInfo file)static async Task<List<PersonModel>> LoadExcelFile(FileInfo file)Satır ve sütun sayaçlarını kurar:
int row = 3; // Skip title and header rows int col = 1;int row = 3; // Skip title and header rows int col = 1;Satırlar Arasında Döngü Yapma
While döngüsünü kullanarak, boş olmayan hücreleri kontrol eder ve değerleri okur:
while (!string.IsNullOrWhiteSpace(ws.Cells[row, col].Value?.ToString()))while (!string.IsNullOrWhiteSpace(ws.Cells[row, col].Value?.ToString()))Döngü içinde, değerler okunur ve ayrıştırılır:
p.Id = int.Parse(ws.Cells[row, col].Value.ToString());
p.FirstName = ws.Cells[row, col + 1].Value.ToString();
p.LastName = ws.Cells[row, col + 2].Value.ToString();p.Id = int.Parse(ws.Cells[row, col].Value.ToString());
p.FirstName = ws.Cells[row, col + 1].Value.ToString();
p.LastName = ws.Cells[row, col + 2].Value.ToString();List
Ithal Edilen Verileri Doğrulama
Tim dönen liste içinde döner ve her girişi konsola yazar:
foreach (var p in peopleFromExcel)
{
Console.WriteLine($"{p.Id} {p.FirstName} {p.LastName}");
}foreach (var p in peopleFromExcel)
{
Console.WriteLine($"{p.Id} {p.FirstName} {p.LastName}");
}Excel'i bir kullanıcı girişi aracı olarak esnekliğini göstermek için Tim, uygulamayı tekrar çalıştırırken "Bill Smith", "Mary White" gibi yeni kayıtları doğrudan Excel dosyasına ekler. Kod değiştirilmeden içe aktarılan bu girdiler, Excel'in bir veri giriş arayüzü olarak potansiyelini kanıtlar.
Pratik Kullanım Durumları
Tim, C# Excel çözümü için kullanım durumlarına dikkat çeker:
Veritabanı tablolarını Excel'e aktarma
Son kullanıcılar tarafından girilen verilerin alınması
Excel'i bir raporlama paneli olarak kullanma
- Veri işleme için yapılı çalışma kitapları oluşturma
Ve Microsoft.Office.Interop.Excel'e bağımlı olmadan, bu Excel'in kurulmasını gerektirir.
EPPlus ve Excel Dosyaları Üzerine Son Notlar
Tim, programlı olarak oluşturulan .xlsx dosyalarının, Excel'de açılıp kaydedilinceye kadar tüm meta verileri içermediğini açıklar. Dosya boyutunun gerçek Excel uygulamasında açtıktan sonra artırılmasının nedeni budur.
Ayrıca, EPPlus'ın şu desteğiyle gelişmiş, sağlam bir kütüphane olduğunu belirtir:
Grafikler
Resimler
Küçük Grafikler
Formüller
Sayfa ayarı
Çizgiler
- Hücre biçimlendirme
Sonuç
C# ile Excel dosyaları oluşturmak zor veya pahalı olmak zorunda değildir. EPPlus Excel kütüphanesi sayesinde, geliştiriciler, MS Office ihtiyacı olmadan özellik zengin Excel belgeleri programlı olarak oluşturabilirler. Tim Corey'ın gösterdiği gibi, sadece birkaç satır kodla şunları yapabilirsiniz:
Bir Excel dosyası oluştur
Satır ve sütunları doldur
Stil uygulama
Veriyi geri okuma
- Excel'i kullanıcıya yönelik bir arayüz olarak kullanma
Bu, hafif raporlama araçları, veri alım/verimi veya basitçe kullanıcılarınıza zaten bildikleri bir arayüz sağlamak için harika bir seçim yapıyor.
Bir projeyi bir sonraki kez oluşturduğunuzda ve Excel verilerini çıkarmanız veya tüketmeniz gerekiyorsa, Tim Corey'ın videodan örnek kodu uygulamayı deneyin - ve Excel'in gücünü .NET Framework veya .NET Core uygulamalarınıza getirin.

