C#'ta Excel Dosyaları Oluşturma
[[academy-video-youtube({"vid": "j3S3aI8nMeE", "start_time": "0", "title": "Creating Excel Files in C#", "creator": "Tim Corey", "length": "55m 42s"})]]
Excel dosyaları oluşturmak ve bunlarla çalışmak, raporlama araçları, veri dışa aktarma veya kullanıcı girişi arayüzleri oluşturmak isteyen her C# geliştiricisi için önemli bir beceridir. Bu makalede, Tim Corey'nin "Creating Excel files in C#" başlıklı videosunda sağladığı detaylı bir açıklamaya derinlemesine dalıyoruz, burada EPPlus kütüphanesi kullanarak C# ile bir Excel dosyası oluşturmayı, formatlamayı ve hatta verileri geri okumayı nasıl göstereceğini gösteriyor.
Liste kullanarak yeni bir Excel çalışma kitabı oluşturmak, Excel çalışma sayfası hücrelerini biçimlendirmek veya yapılandırılmış verileri uygulamanıza geri okumak ister misiniz, Tim'in örneği C#'ta Excel dosyası oluşturmanın temellerini kapsayan pratik bir öğretici işlevi görüyor.
Tim'in videosuna atıfta bulunarak adım adım detaylandıralım.
Giriş: C#'ta Neden Excel Kullanılır?
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 esnek ve veri temsil etmek için mükemmeldir. Excel dosyalarını C#'ta oluşturmanın, karmaşık raporlama çözümlerinin yerine kullanılabileceğini vurgular—Excel'i varsayılan raporlama aracınız yaparak.
Hedef: C# kullanarak bir Excel uygulaması oluşturmak, verilerle doldurmak, bazı formatlamalar uygulamak ve ardından o Excel dosyasını okutmak.
Projesi Çözüm Gezgini'nde Ayarlama
Tim, Visual Studio 2019'u açar, bir Konsol Uygulaması (.NET Core) seçer ve çözümün adını ExcelDemoApp olarak belirler. Bir konsol uygulaması, sadece Excel ile ilgili koda odaklanmak için temiz ve dikkat dağıtıcı olmayan bir ortam sağlar.
C# 9 gibi özellikleriyle .NET 5.0 hedef çerçevesini geliştirmek için 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 kurar. EPPlus, .xlsx dosyaları (Open XML) ile çalışan bir Excel kütüphanesidir ve MS Office veya Excel Interop gerektirmeden grafikler, tablolar, stiller ve formüller gibi tam Excel işlevselliğini destekler.
Not: EPPlus ticari olmayan kullanım için ücretsizdir ancak ticari uygulamalar için lisans gerektirir.
Çalışma zamanı hatalarını önlemek için gerekli ticari olmayan lisans kabul satırını koduna kopyalar ve gerekli using OfficeOpenXml; yönlendirmesini ekler.
Excel Dosya Yolunu Tanımlama
System.IO.FileInfo kullanarak, Tim sabitlenmiş 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ğildir—program tarafından dinamik olarak oluşturulacaktır.
Bir 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 doldurulmuş bir List<PersonModel> döndüren bir yardımcı yöntem GetSetupData() kullanır.
Verileri Excel Dosyasına Asenkron Olarak Kaydetme
Modern gelişimde, UI iş parçacığını engellemek kabul edilemez. Bu yüzden 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 Çalışma Sayfası Oluşturma ve Biçimlendirme
Tim, düzgün bir şekilde elden çıkarılması 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 sayfası ekler:
var ws = package.Workbook.Worksheets.Add("MainReport");var ws = package.Workbook.Worksheets.Add("MainReport");Verilerin Yüklenmesi
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
AutoFitColumns() otomatik olarak sütun genişliklerini ayarlar
ws.Cells[ws.Dimension.Address].AutoFitColumns();ws.Cells[ws.Dimension.Address].AutoFitColumns();Son olarak, Excel dosyasını kaydeder:
await package.SaveAsync();await package.SaveAsync();Excel Hücrelerini ve Satırları Biçimlendirme
Excel dosyasını daha okunabilir hale getirmek için Tim, stil uygulamayı gösterir:
Başlık Satırı
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;Başlık Satırı
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.
Birleştirilmiş hücreler
Yazı tipi stilleri
Arka plan renkleri
Satır/sütun hizalaması
- Genişlik ayarlamaları
Bunlar, tipik MS Office Excel biçimlendirme özelliklerini taklit eder.
C#'ta Bir Excel Dosyasından Veri Okuma
Artık Excel'e veri yazdığımıza göre, veriyi tekrar C#'a geri okumamız zamanı geldi.
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ı Döngüye Alma
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<PersonModel> doldurulur ve döndürülür.
İçe Aktarılan 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ını vurgular:
Veritabanı tablolarını Excel'e aktarma
Son kullanıcılar tarafından girilen verileri içe aktarma
Excel'i bir raporlama panosu olarak kullanma
- Veri işleme için yapılandırılmış çalışma kitapları oluşturma
Ve bunların hepsi, Excel'in kurulmasını gerektiren Microsoft.Office.Interop.Excel'e güvenmeden.
EPPlus ve Excel Dosyaları Hakkında Son Notlar
Tim, programatik olarak oluşturulan .xlsx dosyalarının Excel'de açılıp kaydedilene kadar tüm metaverileri içermediğini açıklar. Bu, gerçek Excel uygulamasında açıldıktan sonra dosya boyutunun neden arttığını açıklar.
EPPlus'ın şu desteğiyle gelişmiş, sağlam bir kütüphane olduğunu belirtir
Grafikler
Görseller
Grafiksel gösterimler
Formüller
Sayfa ayarı
Çizgiler
Hücre biçimlendirme
Sayfa ayarları
Kenarlıklar
- Hücre formatlama
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.
Bir Excel dosyası oluştur
Satır ve sütunları doldur
Stil uygula
Veriyi geri oku
- Excel'i kullanıcıya yönelik bir arayüz olarak kullanma
Bu, hafif raporlama araçları, veri içe/dışa aktarma ya da kullanıcılarınıza zaten bildikleri bir arayüz sağlamak için mükemmel bir seçimdir.
Bir dahaki sefere bir proje inşa ettiğinizde ve Excel verilerini dışa aktarma veya tüketme ihtiyacınız olduğunda, Tim Corey'nin videosundaki örnek kodu uygulamayı deneyin—ve Excel'in gücünü .NET Framework veya .NET Core uygulamalarınıza getirin.

