Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
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.
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.
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.
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.
System.IO.FileInfo kullanarak, Tim sabitlenmiş bir dosya yolu ayarlar:
var file = new FileInfo(@"C:\demos\youtubedemo.xlsx");Dim file As New FileInfo("C:\demos\youtubedemo.xlsx")Bu dosya başlangıçta mevcut değildir—program tarafından dinamik olarak oluşturulacaktır.
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.
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)Private Shared Async Function SaveExcelFile(people As List(Of PersonModel), file As FileInfo) As TaskExcel'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 Then file.Delete()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 package As New ExcelPackage(file)
End UsingÇalışma kitabına yeni bir çalışma sayfası ekler:
var ws = package.Workbook.Worksheets.Add("MainReport");Dim ws = package.Workbook.Worksheets.Add("MainReport")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)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 dosyasını daha okunabilir hale getirmek için Tim, stil uygulamayı gösterir:
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.Centerws.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.Centerws.Column(3).Width = 20;ws.Column(3).Width = 20Bu 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.
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)Private Shared Async Function LoadExcelFile(file As FileInfo) As Task(Of List(Of PersonModel))Satır ve sütun sayaçlarını kurar:
int row = 3; // Skip title and header rows int col = 1;Dim row As Integer = 3 ' Skip title and header rows
Dim col As Integer = 1While 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 Not 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 = Integer.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.
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}");
}For Each p In peopleFromExcel
Console.WriteLine($"{p.Id} {p.FirstName} {p.LastName}")
NextExcel'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.
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.
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
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.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy