Altbilgi içeriğine atla
Iron Academy Logo
C# öğrenin
C# öğrenin

Diğer Kategoriler

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.

Hero Worlddot related to C#'ta Excel Dosyaları Oluşturma
Hero Affiliate related to C#'ta Excel Dosyaları Oluşturma

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js ile çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara