Altbilgi içeriğine atla
IRONXL KULLANARAK

IronXL kullanarak C#'da Excel Dosyası Nasıl Üretilir

C# veya Visual Basic dilinde programatik olarak Excel çalışma sayfası dosyalarını oluşturmak geleneksel olarak Microsoft Office kurulumu veya karmaşık COM Interop gerektiriyordu. IronXL bunu tamamen değiştirir ve Excel uygulama dosyalarını ofis bağımlılıkları olmadan oluşturan basit bir API sunar. Bu eğitici, temel tablo oluşturma, gelişmiş biçimlendirme ve veritabanı entegrasyonu üzerinden C# dilinde Excel dosyaları oluşturmanızı adım adım açıklar. Raporlar oluştururken, verileri dışa aktarırken (XLS dosyası veya XLSX dosyaları) veya elektronik tablo oluşturmayı otomatikleştirirken, .NET uygulamalarında Excel ile çalışma için temel teknikleri öğrenebileceksiniz.

C# Kullanarak IronXL ile Excel Dosyası Oluşturma: Görsel 1 - IronXL

Neden Microsoft Office Olmadan Excel Çalışma Sayfası Dosyalarını Oluşturmalısınız?

Office bağımlılıkları olmadan Excel oluşturma özelliklerini geliştirmek, kritik dağıtım zorluklarını çözer. Sunucu ortamları genellikle lisans maliyetleri ve kaynak yükü nedeniyle Microsoft Office kurulmuş halde olmaz. Her Office kurulumu, önemli miktarda disk alanı ve bellek gerektirir, bu da bulut dağıtımları veya kapsayıcı uygulamaları için pratik değildir.

IronXL, bağımsız çalışarak bu kısıtlamaları ortadan kaldırır. C# Excel dosyası oluşturmanız Windows, Linux, macOS, Docker kapsayıcıları veya Azure Uygulama Hizmetleri üzerinde herhangi bir değişiklik yapmadan çalışır. Bu platformlar arası uyumluluk, bir kez yazıp herhangi bir yere dağıtmanızı sağlar, ister .NET Framework, .NET Core veya .NET 8/9 uygulamalarını hedefleyin.

C# Kullanarak IronXL ile Excel Dosyası Oluşturma: Görsel 2 - Çok Platformlu

COM Interop yükü olmadan performans dramatik şekilde artar. Geleneksel Office otomasyonu, her işlem için ayrı süreç örnekleri yaratır, belleği ve CPU kaynaklarını tüketir. IronXL, her şeyi uygulamanızın süreç alanında bellek içi işler, böylece Excel dosyalarını programatik olarak oluştururken daha hızlı yürütme ve daha düşük kaynak tüketimi sağlar.

Dağıtım, IronXL tek bir NuGet paketi olarak gönderildiğinden daha kolay hale gelir. Hiçbir kayıt girdisi olmadan, hiçbir COM kaydı olmadan ve sürdürülecek hiçbir Office hizmet paketi olmadan. Sürekli entegrasyon hatlarınız sorunsuz çalışır ve Docker kapsayıcıları hafif kalır. Bu basitleştirilmiş yaklaşım, çeşitli geliştirici forumlarında Excel otomasyonu ile ilgili tecrübelerini paylaşan profesyoneller tarafından tartışıldığı gibi IronXL'i popüler bir tercih haline getirmiştir.

Bazı geliştiriciler hala Office Open XML dosya yapıları ile doğrudan çalışmak için Microsoft'un Open XML Productivity Tool'unu keşfetmekte. Ancak, bu yaklaşım daha fazla manuel çaba ve XML şeması ve Open XML SDK kurulumu hakkında ayrıntılı bilgi gerektirir. IronXL, bu karmaşıklıkları soyutlar, size Excel ile programatik çalışmanın çok daha hızlı bir yolunu sağlar.

C# Kullanarak IronXL ile Excel Dosyası Oluşturma: Görsel 3 - Özellikler

IronXL'ı C# Projenize Nasıl Kurarsınız?

IronXL'in kurulumu, Çözüm Gezgini'ndeki NuGet Paket Yöneticisi aracılığıyla sadece birkaç an alır. Visual Studio'da, projenize sağ tıklayın ve "NuGet Paketlerini Yönet" seçeneğini seçin. "IronXL.Excel" arayın ve Kur'a tıklayın. Paket, C# içinde Excel dosyaları oluşturmak için gereken tüm bağımlılıkları otomatik olarak içerir.

Alternatif olarak, Paket Yöneticisi Konsolunu kullanın:

Install-Package IronXL.Excel

C# Kullanarak IronXL ile Excel Dosyası Oluşturma: Görsel 4 - Kurulum

Modern C# projeleriyle çalışan .NET CLI kullanıcıları için:

dotnet add package IronXL.Excel

Programatik olarak bir Excel dosyası oluşturmak için bu basit testle yüklemeyi doğrulayın:

using IronXL;
// Create a new Excel workbook
var workbook = WorkBook.Create();
Console.WriteLine("IronXL installed successfully!");
using IronXL;
// Create a new Excel workbook
var workbook = WorkBook.Create();
Console.WriteLine("IronXL installed successfully!");
Imports IronXL

' Create a new Excel workbook
Dim workbook = WorkBook.Create()
Console.WriteLine("IronXL installed successfully!")
$vbLabelText   $csharpLabel

Bu kod, hafızada bir çalışma kitabı nesnesi oluşturur. Eğer hata almadan çalışırsa, IronXL kullanıma hazırdır. Kütüphane, mevcut projelerinizle uyumluluğu sağlamak için tüm modern .NET sürümlerini destekler. Detaylı kurulum rehberi ve sorun giderme için resmi belgelendirmeye bakın. Başlamaya hazır mısınız? IronXL'i hemen indirin ve birkaç dakika içinde Excel dosyaları oluşturmaya başlayın.

Çıktı

C# Kullanarak IronXL ile Excel Dosyası Oluşturma: Görsel 5 - Konsol Çıktısı

İlk Excel Dosyanızı Nasıl Oluşturursunuz?

WorkBook sınıfı ile başlayan IronXL ile Excel dosyaları oluşturma, tüm Excel işlemlerinin yolunuzu açar. Kütüphane, C#'ta Excel dosyaları üretirken farklı gereksinimleriniz için esneklik sağlamak üzere hem modern XLSX hem de eski XLS formatlarını destekler.

using IronXL;
// Create a new workbook (XLSX format by default)
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add metadata
workbook.Metadata.Title = "Monthly Sales Report";
workbook.Metadata.Author = "Sales Department";
workbook.Metadata.Comments = "Generated using IronXL";
// Create a worksheet
WorkSheet worksheet = workbook.CreateWorkSheet("January Sales");
// Add some basic data
worksheet["A1"].Value = "Date";
worksheet["B1"].Value = "Product";
worksheet["C1"].Value = "Quantity";
worksheet["D1"].Value = "Revenue";
// Add data rows
worksheet["A2"].Value = new DateTime(2024, 1, 15);
worksheet["B2"].Value = "Widget Pro";
worksheet["C2"].Value = 100;
worksheet["D2"].Value = 2500.00;
// Save the workbook
workbook.SaveAs("FirstExcelFile.xlsx");
using IronXL;
// Create a new workbook (XLSX format by default)
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add metadata
workbook.Metadata.Title = "Monthly Sales Report";
workbook.Metadata.Author = "Sales Department";
workbook.Metadata.Comments = "Generated using IronXL";
// Create a worksheet
WorkSheet worksheet = workbook.CreateWorkSheet("January Sales");
// Add some basic data
worksheet["A1"].Value = "Date";
worksheet["B1"].Value = "Product";
worksheet["C1"].Value = "Quantity";
worksheet["D1"].Value = "Revenue";
// Add data rows
worksheet["A2"].Value = new DateTime(2024, 1, 15);
worksheet["B2"].Value = "Widget Pro";
worksheet["C2"].Value = 100;
worksheet["D2"].Value = 2500.00;
// Save the workbook
workbook.SaveAs("FirstExcelFile.xlsx");
Imports IronXL

' Create a new workbook (XLSX format by default)
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)

' Add metadata
workbook.Metadata.Title = "Monthly Sales Report"
workbook.Metadata.Author = "Sales Department"
workbook.Metadata.Comments = "Generated using IronXL"

' Create a worksheet
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("January Sales")

' Add some basic data
worksheet("A1").Value = "Date"
worksheet("B1").Value = "Product"
worksheet("C1").Value = "Quantity"
worksheet("D1").Value = "Revenue"

' Add data rows
worksheet("A2").Value = New DateTime(2024, 1, 15)
worksheet("B2").Value = "Widget Pro"
worksheet("C2").Value = 100
worksheet("D2").Value = 2500.0

' Save the workbook
workbook.SaveAs("FirstExcelFile.xlsx")
$vbLabelText   $csharpLabel

Bu kod, Excel dosyası oluşturma için birkaç anahtar kavram gösterir. WorkBook.Create() yöntemi, bellekte yeni bir Excel dosyası başlatır. Formatı belirlemek için ExcelFileFormat enum kullanırsınız - modern Excel uyumluluğu için XLSX veya eski destek için XLS seçin. Metadata özelliği, Microsoft'un belge özelliği standartlarına uygun olarak Excel'in dosya özelliklerinde görünen belge bilgilerini eklemenizi sağlar.

CreateWorkSheet() yöntemi, belirtilen adla yeni bir sayfa ekler. Excel'in tanıdık hücre notasyonu (A1, B1, vb.), değerleri belirlemeyi sezgisel hale getirir. IronXL veri türü dönüşümünü otomatik olarak işler, tarihleri, sayıları ve metinleri açık döküm yapmadan tanır. SaveAs() yöntemi, tam Excel dosyasını diske yazar. Daha fazla çalışma sayfası işlemleri için, çalışma sayfası yönetimi eğitimini keşfedin.

Çıktı

C# Kullanarak IronXL ile Excel Dosyası Oluşturma: Görsel 6 - Temel Excel Çıktısı

Veriyi Excel Hücrelerine Nasıl Yazarsınız?

IronXL, bireysel hücre atamadan toplu aralık işlemlerine kadar, Excel hücrelerini doldurmak için birden fazla yaklaşım sunar. Bu yöntemleri anlamak, veri senaryonuz için en verimli yaklaşımı seçmenize yardım eder.

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Create a worksheet
WorkSheet worksheet = workbook.CreateWorkSheet("Employees");
// Individual cell assignment
worksheet["A1"].Value = "Employee Name";
worksheet["A2"].Value = "John Smith";
worksheet["A3"].Value = "Jane Doe";
// Range assignment for multiple cells
worksheet["B1:B3"].Value = "Active";
// Using numeric indices (0-based)
worksheet.SetCellValue(0, 2, "Department"); // C1
worksheet.SetCellValue(1, 2, "Sales");       // C2
worksheet.SetCellValue(2, 2, "Marketing");   // C3
// Array-based population
string[] headers = { "ID", "Name", "Email", "Phone" };
for (int i = 0; i < headers.Length; i++)
{
    worksheet.SetCellValue(0, i, headers[i]);
}
// Working with different data types
worksheet["E1"].Value = "Salary";
worksheet["E2"].Value = 75000.50m;  // Decimal for currency
worksheet["E3"].Value = 82000.75m;
worksheet["F1"].Value = "Start Date";
worksheet["F2"].Value = new DateTime(2020, 3, 15);
worksheet["F3"].Value = new DateTime(2019, 7, 1);
worksheet["G1"].Value = "Full Time";
worksheet["G2"].Value = true;  // Boolean
worksheet["G3"].Value = true;
workbook.SaveAs("FirstExcelFile.xlsx");
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Create a worksheet
WorkSheet worksheet = workbook.CreateWorkSheet("Employees");
// Individual cell assignment
worksheet["A1"].Value = "Employee Name";
worksheet["A2"].Value = "John Smith";
worksheet["A3"].Value = "Jane Doe";
// Range assignment for multiple cells
worksheet["B1:B3"].Value = "Active";
// Using numeric indices (0-based)
worksheet.SetCellValue(0, 2, "Department"); // C1
worksheet.SetCellValue(1, 2, "Sales");       // C2
worksheet.SetCellValue(2, 2, "Marketing");   // C3
// Array-based population
string[] headers = { "ID", "Name", "Email", "Phone" };
for (int i = 0; i < headers.Length; i++)
{
    worksheet.SetCellValue(0, i, headers[i]);
}
// Working with different data types
worksheet["E1"].Value = "Salary";
worksheet["E2"].Value = 75000.50m;  // Decimal for currency
worksheet["E3"].Value = 82000.75m;
worksheet["F1"].Value = "Start Date";
worksheet["F2"].Value = new DateTime(2020, 3, 15);
worksheet["F3"].Value = new DateTime(2019, 7, 1);
worksheet["G1"].Value = "Full Time";
worksheet["G2"].Value = true;  // Boolean
worksheet["G3"].Value = true;
workbook.SaveAs("FirstExcelFile.xlsx");
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Create a worksheet
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("Employees")
' Individual cell assignment
worksheet("A1").Value = "Employee Name"
worksheet("A2").Value = "John Smith"
worksheet("A3").Value = "Jane Doe"
' Range assignment for multiple cells
worksheet("B1:B3").Value = "Active"
' Using numeric indices (0-based)
worksheet.SetCellValue(0, 2, "Department") ' C1
worksheet.SetCellValue(1, 2, "Sales") ' C2
worksheet.SetCellValue(2, 2, "Marketing") ' C3
' Array-based population
Dim headers As String() = {"ID", "Name", "Email", "Phone"}
For i As Integer = 0 To headers.Length - 1
    worksheet.SetCellValue(0, i, headers(i))
Next
' Working with different data types
worksheet("E1").Value = "Salary"
worksheet("E2").Value = 75000.5D ' Decimal for currency
worksheet("E3").Value = 82000.75D
worksheet("F1").Value = "Start Date"
worksheet("F2").Value = New DateTime(2020, 3, 15)
worksheet("F3").Value = New DateTime(2019, 7, 1)
worksheet("G1").Value = "Full Time"
worksheet("G2").Value = True ' Boolean
worksheet("G3").Value = True
workbook.SaveAs("FirstExcelFile.xlsx")
$vbLabelText   $csharpLabel

Kod, IronXL'in esnek hücre adreslemesini gösterir. Dizi notasyonu ("A1"), Excel kullanıcıları için doğal gelirken, sayısal indeksler döngüler ve dinamik üretimler için programatik kontrol sağlar. Aralık atamaları ("B1:B3") birden çok hücreye aynı değeri verimli bir şekilde ayarlar, kolonları başlatmak veya varsayılan değerler uygulamak için mükemmeldir.

IronXL, farklı veri türlerini zekice yönetir. Ondalıklar, finansal veriler için hassasiyeti korur, TarihSaat nesneleri Excel tarihleri olarak doğru şekilde biçimlendirilir ve mantıksal değerler TRUE/FALSE olarak görünür. Bu otomatik dönüştürme, veri bütünlüğünü sağlarken manuel biçimlendirme kodunu ortadan kaldırır.

Çıktı

C# Kullanarak IronXL ile Excel Dosyası Oluşturma: Görsel 7 - Excel Çıktısı

Daha büyük veri kümeleri için, bu deseni düşünün:

// Populate from a data source
var employees = GetEmployeeData(); // Your data source
for (int row = 0; row < employees.Count; row++)
{
    worksheet[$"A{row + 2}"].Value = employees[row].Id;
    worksheet[$"B{row + 2}"].Value = employees[row].Name;
    worksheet[$"C{row + 2}"].Value = employees[row].Department;
    worksheet[$"D{row + 2}"].Value = employees[row].Salary;
}
// Populate from a data source
var employees = GetEmployeeData(); // Your data source
for (int row = 0; row < employees.Count; row++)
{
    worksheet[$"A{row + 2}"].Value = employees[row].Id;
    worksheet[$"B{row + 2}"].Value = employees[row].Name;
    worksheet[$"C{row + 2}"].Value = employees[row].Department;
    worksheet[$"D{row + 2}"].Value = employees[row].Salary;
}
' Populate from a data source
Dim employees = GetEmployeeData() ' Your data source
For row As Integer = 0 To employees.Count - 1
    worksheet($"A{row + 2}").Value = employees(row).Id
    worksheet($"B{row + 2}").Value = employees(row).Name
    worksheet($"C{row + 2}").Value = employees(row).Department
    worksheet($"D{row + 2}").Value = employees(row).Salary
Next
$vbLabelText   $csharpLabel

Bu yaklaşım, veri koleksiyonunuz üzerinden yineleme yapar, her özelliği karşılık gelen sütuna eşler. Dize enterpolasyonu ($"A{row + 2}"), başlıkları korumak için satır 2'den başlayarak dinamik olarak hücre adresleri oluşturur.

Profesyonel Biçimlendirme Nasıl Uygulanır?

Profesyonel Excel dosyaları ham veriden fazlasını gerektirir. IronXL'nin stil API'si, C# dilinde Excel dosyası oluştururken basit elektronik tabloları biçimlendirme, renkler ve görsel hiyerarşi aracılığıyla cilalanmış iş belgelerine dönüştürür.

using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Create a worksheet
WorkSheet worksheet = workbook.CreateWorkSheet("Employees");
// Header formatting
var headerRange = worksheet["A1:D1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.Font.Height = 12;
headerRange.Style.SetBackgroundColor("#4472C4");
headerRange.Style.Font.Color = "#FFFFFF";
// Column width adjustment
worksheet.AutoSizeColumn(0); // Auto-fit column A
worksheet.GetColumn(1).Width = 20; // Set column B to 20 characters
// Number formatting
var salaryColumn = worksheet["E2:E3"];
salaryColumn.FormatString = "$#,##0.00";
// Date formatting
var dateColumn = worksheet["F2:F3"];
dateColumn.FormatString = "MM/dd/yyyy";
// Cell borders
var dataRange = worksheet["A1:G3"];
dataRange.Style.TopBorder.Type = IronXL.Styles.BorderType.Thin;
dataRange.Style.BottomBorder.Type = IronXL.Styles.BorderType.Thin;
dataRange.Style.LeftBorder.Type = IronXL.Styles.BorderType.Thin;
dataRange.Style.RightBorder.Type = IronXL.Styles.BorderType.Thin;
// To set border color, use:
dataRange.Style.TopBorder.Color = "#000000";
dataRange.Style.BottomBorder.Color = "#000000";
dataRange.Style.LeftBorder.Color = "#000000";
dataRange.Style.RightBorder.Color = "#000000";
// Text alignment
worksheet["A1:G1"].Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center;
// Alternating row colors for readability
for (int row = 2; row <= 3; row++)
{
    if (row % 2 == 0)
    {
        worksheet[$"A{row}:G{row}"].Style.SetBackgroundColor("#F2F2F2");
    }
}
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Create a worksheet
WorkSheet worksheet = workbook.CreateWorkSheet("Employees");
// Header formatting
var headerRange = worksheet["A1:D1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.Font.Height = 12;
headerRange.Style.SetBackgroundColor("#4472C4");
headerRange.Style.Font.Color = "#FFFFFF";
// Column width adjustment
worksheet.AutoSizeColumn(0); // Auto-fit column A
worksheet.GetColumn(1).Width = 20; // Set column B to 20 characters
// Number formatting
var salaryColumn = worksheet["E2:E3"];
salaryColumn.FormatString = "$#,##0.00";
// Date formatting
var dateColumn = worksheet["F2:F3"];
dateColumn.FormatString = "MM/dd/yyyy";
// Cell borders
var dataRange = worksheet["A1:G3"];
dataRange.Style.TopBorder.Type = IronXL.Styles.BorderType.Thin;
dataRange.Style.BottomBorder.Type = IronXL.Styles.BorderType.Thin;
dataRange.Style.LeftBorder.Type = IronXL.Styles.BorderType.Thin;
dataRange.Style.RightBorder.Type = IronXL.Styles.BorderType.Thin;
// To set border color, use:
dataRange.Style.TopBorder.Color = "#000000";
dataRange.Style.BottomBorder.Color = "#000000";
dataRange.Style.LeftBorder.Color = "#000000";
dataRange.Style.RightBorder.Color = "#000000";
// Text alignment
worksheet["A1:G1"].Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center;
// Alternating row colors for readability
for (int row = 2; row <= 3; row++)
{
    if (row % 2 == 0)
    {
        worksheet[$"A{row}:G{row}"].Style.SetBackgroundColor("#F2F2F2");
    }
}
Imports IronXL

Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Create a worksheet
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("Employees")
' Header formatting
Dim headerRange = worksheet("A1:D1")
headerRange.Style.Font.Bold = True
headerRange.Style.Font.Height = 12
headerRange.Style.SetBackgroundColor("#4472C4")
headerRange.Style.Font.Color = "#FFFFFF"
' Column width adjustment
worksheet.AutoSizeColumn(0) ' Auto-fit column A
worksheet.GetColumn(1).Width = 20 ' Set column B to 20 characters
' Number formatting
Dim salaryColumn = worksheet("E2:E3")
salaryColumn.FormatString = "$#,##0.00"
' Date formatting
Dim dateColumn = worksheet("F2:F3")
dateColumn.FormatString = "MM/dd/yyyy"
' Cell borders
Dim dataRange = worksheet("A1:G3")
dataRange.Style.TopBorder.Type = IronXL.Styles.BorderType.Thin
dataRange.Style.BottomBorder.Type = IronXL.Styles.BorderType.Thin
dataRange.Style.LeftBorder.Type = IronXL.Styles.BorderType.Thin
dataRange.Style.RightBorder.Type = IronXL.Styles.BorderType.Thin
' To set border color, use:
dataRange.Style.TopBorder.Color = "#000000"
dataRange.Style.BottomBorder.Color = "#000000"
dataRange.Style.LeftBorder.Color = "#000000"
dataRange.Style.RightBorder.Color = "#000000"
' Text alignment
worksheet("A1:G1").Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center
' Alternating row colors for readability
For row As Integer = 2 To 3
    If row Mod 2 = 0 Then
        worksheet($"A{row}:G{row}").Style.SetBackgroundColor("#F2F2F2")
    End If
Next row
$vbLabelText   $csharpLabel

Bu format kodu, kurumsal standartlara uygun profesyonel bir görünüm yaratır. Arka plan renkli kalın başlıklar, görsel hiyerarşi oluşturur. SetBackgroundColor() yöntemi, renk şemanız üzerinde hassas kontrol sağlayan hex renk kodlarını kabul eder. Yazı tipi özellikleri arasında boyut, renk, kalın, italik ve altı çizili seçenekler yer alır, bunların hepsi kurumsal marka yönergelerine uygun Excel dosyaları oluşturmada önemlidir.

Sütun genişliği ayarlamaları, metin kesilmesini önler. AutoSizeColumn() otomatik olarak içeriği sığdırırken, SetColumnWidth() kesin kontrol sağlar. Sayı biçimlendirme, Excel'in format kodlarını kullanır. Örneğin, '$#,##0.00' para birimini bin ayırıcıları ve iki ondalık basamakla gösterir. Tarih biçimlendirme benzer desenlere uyar, Microsoft'un Excel spesifikasyonlarında belgelenen standart Excel tarih format dizelerini kullanır.

Sınırlar, okunabilirliği artırarak veri sınırlarını tanımlar. BorderType numarası, ince, orta, kalın, noktalı ve kesik gibi çeşitli stiller sunar. Hizalama seçenekleri başlıkları ortalar ve sayıları sağa hizalayarak elektronik tablo düzenlemelerine uygun olarak. Sık sık 'bantlı satırlar' olarak adlandırılan değişen satır renkleri, okuyucuların geniş veri setlerinde bilgileri takip etmelerine yardımcı olur. Biçimlendirilmiş Excel verilerini oluşturmak için daha fazla gelişmiş biçimlendirme hakkında bilgi edinmek için hücre stil kılavuzumuza bakın.

Çıktı

C# Kullanarak IronXL ile Excel Dosyası Oluşturma: Görsel 8 - Biçimlendirilmiş Excel Çıktısı

Excel Formüllerini Programatik Olarak Nasıl Kullanırsınız?

Excel formülleri, otomatik hesaplamalarla elektronik tabloları canlandırır. IronXL, dinamik elektronik tablolar oluşturmanızı sağlayarak formül oluşturma ve değerlendirmeyi destekler, bu da otomatik olarak güncellenir.

var workbook = WorkBook.Create();
// Create a budget worksheet
WorkSheet budget = workbook.CreateWorkSheet("Q1 Budget");
// Headers
budget["A1"].Value = "Category";
budget["B1"].Value = "January";
budget["C1"].Value = "February";
budget["D1"].Value = "March";
budget["E1"].Value = "Q1 Total";
// Budget categories and values
string[] categories = { "Salaries", "Marketing", "Operations", "Equipment", "Training" };
decimal[,] monthlyBudgets = {
    { 50000, 52000, 51000 },
    { 15000, 18000, 20000 },
    { 8000, 8500, 9000 },
    { 12000, 5000, 7000 },
    { 3000, 3500, 4000 }
};
// Populate data
for (int i = 0; i < categories.Length; i++)
{
    budget[$"A{i + 2}"].Value = categories[i];
    budget[$"B{i + 2}"].Value = monthlyBudgets[i, 0];
    budget[$"C{i + 2}"].Value = monthlyBudgets[i, 1];
    budget[$"D{i + 2}"].Value = monthlyBudgets[i, 2];
    // Row total formula
    budget[$"E{i + 2}"].Formula = $"=SUM(B{i + 2}:D{i + 2})";
}
// Monthly totals row
budget["A7"].Value = "Monthly Total";
budget["B7"].Formula = "=SUM(B2:B6)";
budget["C7"].Formula = "=SUM(C2:C6)";
budget["D7"].Formula = "=SUM(D2:D6)";
budget["E7"].Formula = "=SUM(E2:E6)";
// Calculate percentages
budget["A9"].Value = "Marketing %";
budget["B9"].Formula = "=B3/B7*100";
budget["C9"].Formula = "=C3/C7*100";
budget["D9"].Formula = "=D3/D7*100";
// Average calculation
budget["A10"].Value = "Average Spending";
budget["B10"].Formula = "=AVERAGE(B2:B6)";
// Evaluate all formulas
workbook.EvaluateAll();
workbook.SaveAs("Budget.xlsx");
var workbook = WorkBook.Create();
// Create a budget worksheet
WorkSheet budget = workbook.CreateWorkSheet("Q1 Budget");
// Headers
budget["A1"].Value = "Category";
budget["B1"].Value = "January";
budget["C1"].Value = "February";
budget["D1"].Value = "March";
budget["E1"].Value = "Q1 Total";
// Budget categories and values
string[] categories = { "Salaries", "Marketing", "Operations", "Equipment", "Training" };
decimal[,] monthlyBudgets = {
    { 50000, 52000, 51000 },
    { 15000, 18000, 20000 },
    { 8000, 8500, 9000 },
    { 12000, 5000, 7000 },
    { 3000, 3500, 4000 }
};
// Populate data
for (int i = 0; i < categories.Length; i++)
{
    budget[$"A{i + 2}"].Value = categories[i];
    budget[$"B{i + 2}"].Value = monthlyBudgets[i, 0];
    budget[$"C{i + 2}"].Value = monthlyBudgets[i, 1];
    budget[$"D{i + 2}"].Value = monthlyBudgets[i, 2];
    // Row total formula
    budget[$"E{i + 2}"].Formula = $"=SUM(B{i + 2}:D{i + 2})";
}
// Monthly totals row
budget["A7"].Value = "Monthly Total";
budget["B7"].Formula = "=SUM(B2:B6)";
budget["C7"].Formula = "=SUM(C2:C6)";
budget["D7"].Formula = "=SUM(D2:D6)";
budget["E7"].Formula = "=SUM(E2:E6)";
// Calculate percentages
budget["A9"].Value = "Marketing %";
budget["B9"].Formula = "=B3/B7*100";
budget["C9"].Formula = "=C3/C7*100";
budget["D9"].Formula = "=D3/D7*100";
// Average calculation
budget["A10"].Value = "Average Spending";
budget["B10"].Formula = "=AVERAGE(B2:B6)";
// Evaluate all formulas
workbook.EvaluateAll();
workbook.SaveAs("Budget.xlsx");
Imports System

Dim workbook = WorkBook.Create()
' Create a budget worksheet
Dim budget As WorkSheet = workbook.CreateWorkSheet("Q1 Budget")
' Headers
budget("A1").Value = "Category"
budget("B1").Value = "January"
budget("C1").Value = "February"
budget("D1").Value = "March"
budget("E1").Value = "Q1 Total"
' Budget categories and values
Dim categories As String() = {"Salaries", "Marketing", "Operations", "Equipment", "Training"}
Dim monthlyBudgets As Decimal(,) = {
    {50000, 52000, 51000},
    {15000, 18000, 20000},
    {8000, 8500, 9000},
    {12000, 5000, 7000},
    {3000, 3500, 4000}
}
' Populate data
For i As Integer = 0 To categories.Length - 1
    budget($"A{i + 2}").Value = categories(i)
    budget($"B{i + 2}").Value = monthlyBudgets(i, 0)
    budget($"C{i + 2}").Value = monthlyBudgets(i, 1)
    budget($"D{i + 2}").Value = monthlyBudgets(i, 2)
    ' Row total formula
    budget($"E{i + 2}").Formula = $"=SUM(B{i + 2}:D{i + 2})"
Next
' Monthly totals row
budget("A7").Value = "Monthly Total"
budget("B7").Formula = "=SUM(B2:B6)"
budget("C7").Formula = "=SUM(C2:C6)"
budget("D7").Formula = "=SUM(D2:D6)"
budget("E7").Formula = "=SUM(E2:E6)"
' Calculate percentages
budget("A9").Value = "Marketing %"
budget("B9").Formula = "=B3/B7*100"
budget("C9").Formula = "=C3/C7*100"
budget("D9").Formula = "=D3/D7*100"
' Average calculation
budget("A10").Value = "Average Spending"
budget("B10").Formula = "=AVERAGE(B2:B6)"
' Evaluate all formulas
workbook.EvaluateAll()
workbook.SaveAs("Budget.xlsx")
$vbLabelText   $csharpLabel

Bu bütçe örneği, formüllerin pratik uygulamalarını sergiler. Formül özelliği, bir eşittir işaretiyle başlayan standart Excel formül sözdizimini kabul eder. IronXL, SUM, AVERAGE, COUNT, MAX, MIN ve daha birçok yaygın işlevi destekler. Formüllerdeki hücre referansları Excel'de olduğu gibi çalışır, göreceli ve mutlak referansları içerir.

Satır toplamı formülleri (=SUM(B{i + 2}:D{i + 2})), her kategori için çeyrek toplamları hesaplar. Dizgi interpolasyonu, her satır için doğru hücre referanslarını dinamik olarak oluşturur. Aylık toplamlar, tüm sütunları toplar, yüzde hesaplamaları belirli hücreleri toplamlarla bölerek.

EvaluateAll() yöntemi, tüm formülleri işler ve çalışma kitabı genelinde hesaplanan değerleri günceller. Bu, Excel'de açıldığında formüllerin sonuçları göstermesini sağlar. Değerlendirme olmadan, Excel formülleri kullanıcı yeniden hesaplama yapana kadar gösterecektir.

Çıktı

C# Kullanarak IronXL ile Excel Dosyası Oluşturma: Görsel 9 - Formüller Kullanarak Excel Çıktısı

Veri Tabanlarından Excel'e Veri Nasıl Aktarılır?

Gerçek dünya uygulamaları, genellikle raporlama ve analiz için veritabanı verilerini Excel'e aktarır. IronXL, C# uygulamalarından Excel dosyaları oluştururken manuel alan eşlemesine ihtiyaç duymadan yerleşik DataTable desteğiyle bu süreci kolaylaştırır.

using System;
using System.Data;
using System.Data.SqlClient;
// Simulate database retrieval (replace with your actual database code)
DataTable GetSalesData()
{
    DataTable dt = new DataTable("Sales");
    dt.Columns.Add("OrderID", typeof(int));
    dt.Columns.Add("CustomerName", typeof(string));
    dt.Columns.Add("Product", typeof(string));
    dt.Columns.Add("Quantity", typeof(int));
    dt.Columns.Add("UnitPrice", typeof(decimal));
    dt.Columns.Add("OrderDate", typeof(DateTime));
    // Sample data (normally from database)
    dt.Rows.Add(1001, "ABC Corp", "Widget Pro", 50, 25.99m, DateTime.Now.AddDays(-5));
    dt.Rows.Add(1002, "XYZ Ltd", "Widget Basic", 100, 15.99m, DateTime.Now.AddDays(-4));
    dt.Rows.Add(1003, "ABC Corp", "Widget Premium", 25, 45.99m, DateTime.Now.AddDays(-3));
    dt.Rows.Add(1004, "Tech Solutions", "Widget Pro", 75, 25.99m, DateTime.Now.AddDays(-2));
    dt.Rows.Add(1005, "XYZ Ltd", "Widget Premium", 30, 45.99m, DateTime.Now.AddDays(-1));
    return dt;
}
// Export to Excel
WorkBook reportWorkbook = WorkBook.Create();
WorkSheet reportSheet = reportWorkbook.CreateWorkSheet("Sales Report");
// Get data from database
DataTable salesData = GetSalesData();
// Method 1: Manual mapping with formatting
reportSheet["A1"].Value = "Order Report - " + DateTime.Now.ToString("MMMM yyyy");
reportSheet.Merge("A1:F1");
reportSheet["A1"].Style.Font.Bold = true;
reportSheet["A1"].Style.Font.Height = 14;
// Headers
int headerRow = 3;
for (int col = 0; col < salesData.Columns.Count; col++)
{
    reportSheet.SetCellValue(headerRow - 1, col, salesData.Columns[col].ColumnName);
}
// Format headers
var headers = reportSheet[$"A{headerRow}:F{headerRow}"];
headers.Style.Font.Bold = true;
headers.Style.SetBackgroundColor("#D9E1F2");
// Data rows
for (int row = 0; row < salesData.Rows.Count; row++)
{
    for (int col = 0; col < salesData.Columns.Count; col++)
    {
        reportSheet.SetCellValue(row + headerRow, col, salesData.Rows[row][col]);
    }
    // Add total column with formula
    reportSheet[$"G{row + headerRow + 1}"].Formula = $"=D{row + headerRow + 1}*E{row + headerRow + 1}";
}
// Add total header and format
reportSheet["G3"].Value = "Total";
reportSheet["G3"].Style.Font.Bold = true;
reportSheet["G3"].Style.SetBackgroundColor("#D9E1F2");
// Format currency columns
reportSheet[$"E{headerRow + 1}:E{headerRow + salesData.Rows.Count}"].FormatString = "$#,##0.00";
reportSheet[$"G{headerRow + 1}:G{headerRow + salesData.Rows.Count}"].FormatString = "$#,##0.00";
// Format date column
reportSheet[$"F{headerRow + 1}:F{headerRow + salesData.Rows.Count}"].FormatString = "MM/dd/yyyy";
// Add summary section
int summaryRow = headerRow + salesData.Rows.Count + 2;
reportSheet[$"A{summaryRow}"].Value = "Summary";
reportSheet[$"A{summaryRow}"].Style.Font.Bold = true;
reportSheet[$"A{summaryRow + 1}"].Value = "Total Orders:";
reportSheet[$"B{summaryRow + 1}"].Formula = $"=COUNTA(A{headerRow + 1}:A{headerRow + salesData.Rows.Count})";
reportSheet[$"A{summaryRow + 2}"].Value = "Total Revenue:";
reportSheet[$"B{summaryRow + 2}"].Formula = $"=SUM(G{headerRow + 1}:G{headerRow + salesData.Rows.Count})";
reportSheet[$"B{summaryRow + 2}"].FormatString = "$#,##0.00";
// Auto-fit columns
for (int col = 0; col <= 6; col++)
{
    reportSheet.AutoSizeColumn(col);
}
// Evaluate formulas and save
reportWorkbook.EvaluateAll();
reportWorkbook.SaveAs("DatabaseExport.xlsx");
using System;
using System.Data;
using System.Data.SqlClient;
// Simulate database retrieval (replace with your actual database code)
DataTable GetSalesData()
{
    DataTable dt = new DataTable("Sales");
    dt.Columns.Add("OrderID", typeof(int));
    dt.Columns.Add("CustomerName", typeof(string));
    dt.Columns.Add("Product", typeof(string));
    dt.Columns.Add("Quantity", typeof(int));
    dt.Columns.Add("UnitPrice", typeof(decimal));
    dt.Columns.Add("OrderDate", typeof(DateTime));
    // Sample data (normally from database)
    dt.Rows.Add(1001, "ABC Corp", "Widget Pro", 50, 25.99m, DateTime.Now.AddDays(-5));
    dt.Rows.Add(1002, "XYZ Ltd", "Widget Basic", 100, 15.99m, DateTime.Now.AddDays(-4));
    dt.Rows.Add(1003, "ABC Corp", "Widget Premium", 25, 45.99m, DateTime.Now.AddDays(-3));
    dt.Rows.Add(1004, "Tech Solutions", "Widget Pro", 75, 25.99m, DateTime.Now.AddDays(-2));
    dt.Rows.Add(1005, "XYZ Ltd", "Widget Premium", 30, 45.99m, DateTime.Now.AddDays(-1));
    return dt;
}
// Export to Excel
WorkBook reportWorkbook = WorkBook.Create();
WorkSheet reportSheet = reportWorkbook.CreateWorkSheet("Sales Report");
// Get data from database
DataTable salesData = GetSalesData();
// Method 1: Manual mapping with formatting
reportSheet["A1"].Value = "Order Report - " + DateTime.Now.ToString("MMMM yyyy");
reportSheet.Merge("A1:F1");
reportSheet["A1"].Style.Font.Bold = true;
reportSheet["A1"].Style.Font.Height = 14;
// Headers
int headerRow = 3;
for (int col = 0; col < salesData.Columns.Count; col++)
{
    reportSheet.SetCellValue(headerRow - 1, col, salesData.Columns[col].ColumnName);
}
// Format headers
var headers = reportSheet[$"A{headerRow}:F{headerRow}"];
headers.Style.Font.Bold = true;
headers.Style.SetBackgroundColor("#D9E1F2");
// Data rows
for (int row = 0; row < salesData.Rows.Count; row++)
{
    for (int col = 0; col < salesData.Columns.Count; col++)
    {
        reportSheet.SetCellValue(row + headerRow, col, salesData.Rows[row][col]);
    }
    // Add total column with formula
    reportSheet[$"G{row + headerRow + 1}"].Formula = $"=D{row + headerRow + 1}*E{row + headerRow + 1}";
}
// Add total header and format
reportSheet["G3"].Value = "Total";
reportSheet["G3"].Style.Font.Bold = true;
reportSheet["G3"].Style.SetBackgroundColor("#D9E1F2");
// Format currency columns
reportSheet[$"E{headerRow + 1}:E{headerRow + salesData.Rows.Count}"].FormatString = "$#,##0.00";
reportSheet[$"G{headerRow + 1}:G{headerRow + salesData.Rows.Count}"].FormatString = "$#,##0.00";
// Format date column
reportSheet[$"F{headerRow + 1}:F{headerRow + salesData.Rows.Count}"].FormatString = "MM/dd/yyyy";
// Add summary section
int summaryRow = headerRow + salesData.Rows.Count + 2;
reportSheet[$"A{summaryRow}"].Value = "Summary";
reportSheet[$"A{summaryRow}"].Style.Font.Bold = true;
reportSheet[$"A{summaryRow + 1}"].Value = "Total Orders:";
reportSheet[$"B{summaryRow + 1}"].Formula = $"=COUNTA(A{headerRow + 1}:A{headerRow + salesData.Rows.Count})";
reportSheet[$"A{summaryRow + 2}"].Value = "Total Revenue:";
reportSheet[$"B{summaryRow + 2}"].Formula = $"=SUM(G{headerRow + 1}:G{headerRow + salesData.Rows.Count})";
reportSheet[$"B{summaryRow + 2}"].FormatString = "$#,##0.00";
// Auto-fit columns
for (int col = 0; col <= 6; col++)
{
    reportSheet.AutoSizeColumn(col);
}
// Evaluate formulas and save
reportWorkbook.EvaluateAll();
reportWorkbook.SaveAs("DatabaseExport.xlsx");
Imports System
Imports System.Data
Imports System.Data.SqlClient

' Simulate database retrieval (replace with your actual database code)
Function GetSalesData() As DataTable
    Dim dt As New DataTable("Sales")
    dt.Columns.Add("OrderID", GetType(Integer))
    dt.Columns.Add("CustomerName", GetType(String))
    dt.Columns.Add("Product", GetType(String))
    dt.Columns.Add("Quantity", GetType(Integer))
    dt.Columns.Add("UnitPrice", GetType(Decimal))
    dt.Columns.Add("OrderDate", GetType(DateTime))
    ' Sample data (normally from database)
    dt.Rows.Add(1001, "ABC Corp", "Widget Pro", 50, 25.99D, DateTime.Now.AddDays(-5))
    dt.Rows.Add(1002, "XYZ Ltd", "Widget Basic", 100, 15.99D, DateTime.Now.AddDays(-4))
    dt.Rows.Add(1003, "ABC Corp", "Widget Premium", 25, 45.99D, DateTime.Now.AddDays(-3))
    dt.Rows.Add(1004, "Tech Solutions", "Widget Pro", 75, 25.99D, DateTime.Now.AddDays(-2))
    dt.Rows.Add(1005, "XYZ Ltd", "Widget Premium", 30, 45.99D, DateTime.Now.AddDays(-1))
    Return dt
End Function

' Export to Excel
Dim reportWorkbook As WorkBook = WorkBook.Create()
Dim reportSheet As WorkSheet = reportWorkbook.CreateWorkSheet("Sales Report")

' Get data from database
Dim salesData As DataTable = GetSalesData()

' Method 1: Manual mapping with formatting
reportSheet("A1").Value = "Order Report - " & DateTime.Now.ToString("MMMM yyyy")
reportSheet.Merge("A1:F1")
reportSheet("A1").Style.Font.Bold = True
reportSheet("A1").Style.Font.Height = 14

' Headers
Dim headerRow As Integer = 3
For col As Integer = 0 To salesData.Columns.Count - 1
    reportSheet.SetCellValue(headerRow - 1, col, salesData.Columns(col).ColumnName)
Next

' Format headers
Dim headers = reportSheet($"A{headerRow}:F{headerRow}")
headers.Style.Font.Bold = True
headers.Style.SetBackgroundColor("#D9E1F2")

' Data rows
For row As Integer = 0 To salesData.Rows.Count - 1
    For col As Integer = 0 To salesData.Columns.Count - 1
        reportSheet.SetCellValue(row + headerRow, col, salesData.Rows(row)(col))
    Next
    ' Add total column with formula
    reportSheet($"G{row + headerRow + 1}").Formula = $"=D{row + headerRow + 1}*E{row + headerRow + 1}"
Next

' Add total header and format
reportSheet("G3").Value = "Total"
reportSheet("G3").Style.Font.Bold = True
reportSheet("G3").Style.SetBackgroundColor("#D9E1F2")

' Format currency columns
reportSheet($"E{headerRow + 1}:E{headerRow + salesData.Rows.Count}").FormatString = "$#,##0.00"
reportSheet($"G{headerRow + 1}:G{headerRow + salesData.Rows.Count}").FormatString = "$#,##0.00"

' Format date column
reportSheet($"F{headerRow + 1}:F{headerRow + salesData.Rows.Count}").FormatString = "MM/dd/yyyy"

' Add summary section
Dim summaryRow As Integer = headerRow + salesData.Rows.Count + 2
reportSheet($"A{summaryRow}").Value = "Summary"
reportSheet($"A{summaryRow}").Style.Font.Bold = True
reportSheet($"A{summaryRow + 1}").Value = "Total Orders:"
reportSheet($"B{summaryRow + 1}").Formula = $"=COUNTA(A{headerRow + 1}:A{headerRow + salesData.Rows.Count})"
reportSheet($"A{summaryRow + 2}").Value = "Total Revenue:"
reportSheet($"B{summaryRow + 2}").Formula = $"=SUM(G{headerRow + 1}:G{headerRow + salesData.Rows.Count})"
reportSheet($"B{summaryRow + 2}").FormatString = "$#,##0.00"

' Auto-fit columns
For col As Integer = 0 To 6
    reportSheet.AutoSizeColumn(col)
Next

' Evaluate formulas and save
reportWorkbook.EvaluateAll()
reportWorkbook.SaveAs("DatabaseExport.xlsx")
$vbLabelText   $csharpLabel

Bu kapsamlı örnek, C#'ta Excel dosyaları oluşturmak için eksiksiz bir veritabanı-Excel iş akışını gösterir. DataTable veritabanı alımını simüle eder - üretimde, bunu Entity Framework, Dapper veya ADO.NET kullanarak gerçek veritabanı sorgularınızla değiştirin. Elle eşleştirme yaklaşımı, Microsoft'un veri dışa aktarma en iyi uygulamaları tarafından önerildiği gibi biçimlendirme ve layout üzerinde tam kontrol sağlar.

Kod, bir başlık, biçimlendirilmiş başlıklar ve veri satırları içeren profesyonel bir rapor oluşturur. Formül sütunları, nihai toplamları dinamik olarak hesaplar. Özet bölümü, Excel formüllerini kullanarak siparişleri sayar ve geliri toplar, böylece verilerde değişiklik olursa bu değerlerin güncellenmesini sağlar. Para birimi ve tarih biçimlendirme, iş belgeleri standartlarına uyarken, sütunların otomatik boyutlandırılması tüm içeriklerin düzgün şekilde görüntülenmesini sağlar. Daha büyük veri kümelerini yönetmek için, performans optimizasyon kılavuzumuzu keşfedin.

Çıktı

C# Kullanarak IronXL ile Excel Dosyası Oluşturma: Görsel 10 - Veritabanından Excel'e Çıktı

Excel raporlamanızı düzene mi sokmanız gerekiyor? IronXL'in tam potansiyelini açığa çıkarmak için bir lisans alın.

Çoklu Çalışma Sayfaları Nasıl Yönetilir?

Karmaşık Excel dosyaları, ilgili verileri düzenlemek için genellikle birden çok çalışma sayfasına ihtiyaç duyar. IronXL, çalışma sayfalarını oluşturma, erişme ve düzenleme için sezgisel yöntemlerle çok sayfalı yönetimi kolaylaştırır.

// Create a multi-sheet workbook
WorkBook companyReport = WorkBook.Create();
// Create department sheets
WorkSheet salesSheet = companyReport.CreateWorkSheet("Sales");
WorkSheet inventorySheet = companyReport.CreateWorkSheet("Inventory");
WorkSheet hrSheet = companyReport.CreateWorkSheet("HR Metrics");
// Populate Sales sheet
salesSheet["A1"].Value = "Sales Dashboard";
salesSheet["A3"].Value = "Region";
salesSheet["B3"].Value = "Q1 Sales";
salesSheet["C3"].Value = "Q2 Sales";
string[] regions = { "North", "South", "East", "West" };
decimal[] q1Sales = { 250000, 180000, 220000, 195000 };
decimal[] q2Sales = { 275000, 195000, 240000, 210000 };
for (int i = 0; i < regions.Length; i++)
{
    salesSheet[$"A{i + 4}"].Value = regions[i];
    salesSheet[$"B{i + 4}"].Value = q1Sales[i];
    salesSheet[$"C{i + 4}"].Value = q2Sales[i];
}
// Populate Inventory sheet
inventorySheet["A1"].Value = "Inventory Status";
inventorySheet["A3"].Value = "Product";
inventorySheet["B3"].Value = "Stock Level";
inventorySheet["C3"].Value = "Reorder Point";
inventorySheet["D3"].Value = "Status";
// Add inventory data with conditional status
string[] products = { "Widget A", "Widget B", "Widget C" };
int[] stock = { 150, 45, 200 };
int[] reorderPoint = { 100, 50, 75 };
for (int i = 0; i < products.Length; i++)
{
    inventorySheet[$"A{i + 4}"].Value = products[i];
    inventorySheet[$"B{i + 4}"].Value = stock[i];
    inventorySheet[$"C{i + 4}"].Value = reorderPoint[i];
    // Status based on stock level
    string status = stock[i] <= reorderPoint[i] ? "REORDER" : "OK";
    inventorySheet[$"D{i + 4}"].Value = status;
    // Color code status
    if (status == "REORDER")
    {
        inventorySheet[$"D{i + 4}"].Style.Font.Color = "#FF0000";
    }
}
// Create summary sheet referencing other sheets
WorkSheet summarySheet = companyReport.CreateWorkSheet("Summary");
summarySheet["A1"].Value = "Company Overview";
summarySheet["A3"].Value = "Metric";
summarySheet["B3"].Value = "Value";
summarySheet["A4"].Value = "Total Q1 Sales";
summarySheet["B4"].Formula = "=SUM(Sales!B4:B7)";
summarySheet["A5"].Value = "Total Q2 Sales";
summarySheet["B5"].Formula = "=SUM(Sales!C4:C7)";
summarySheet["A6"].Value = "Products Need Reorder";
summarySheet["B6"].Formula = "=COUNTIF(Inventory!D4:D6,\"REORDER\")";
// Format all sheets consistently
foreach (WorkSheet sheet in companyReport.WorkSheets)
{
    // Format headers
    sheet["A1"].Style.Font.Bold = true;
    sheet["A1"].Style.Font.Height = 14;
    var headerRow = sheet["A3:D3"];
    headerRow.Style.Font.Bold = true;
    headerRow.Style.SetBackgroundColor("#E7E6E6");
}
// Save multi-sheet workbook
companyReport.SaveAs("CompanyReport.xlsx");
// Create a multi-sheet workbook
WorkBook companyReport = WorkBook.Create();
// Create department sheets
WorkSheet salesSheet = companyReport.CreateWorkSheet("Sales");
WorkSheet inventorySheet = companyReport.CreateWorkSheet("Inventory");
WorkSheet hrSheet = companyReport.CreateWorkSheet("HR Metrics");
// Populate Sales sheet
salesSheet["A1"].Value = "Sales Dashboard";
salesSheet["A3"].Value = "Region";
salesSheet["B3"].Value = "Q1 Sales";
salesSheet["C3"].Value = "Q2 Sales";
string[] regions = { "North", "South", "East", "West" };
decimal[] q1Sales = { 250000, 180000, 220000, 195000 };
decimal[] q2Sales = { 275000, 195000, 240000, 210000 };
for (int i = 0; i < regions.Length; i++)
{
    salesSheet[$"A{i + 4}"].Value = regions[i];
    salesSheet[$"B{i + 4}"].Value = q1Sales[i];
    salesSheet[$"C{i + 4}"].Value = q2Sales[i];
}
// Populate Inventory sheet
inventorySheet["A1"].Value = "Inventory Status";
inventorySheet["A3"].Value = "Product";
inventorySheet["B3"].Value = "Stock Level";
inventorySheet["C3"].Value = "Reorder Point";
inventorySheet["D3"].Value = "Status";
// Add inventory data with conditional status
string[] products = { "Widget A", "Widget B", "Widget C" };
int[] stock = { 150, 45, 200 };
int[] reorderPoint = { 100, 50, 75 };
for (int i = 0; i < products.Length; i++)
{
    inventorySheet[$"A{i + 4}"].Value = products[i];
    inventorySheet[$"B{i + 4}"].Value = stock[i];
    inventorySheet[$"C{i + 4}"].Value = reorderPoint[i];
    // Status based on stock level
    string status = stock[i] <= reorderPoint[i] ? "REORDER" : "OK";
    inventorySheet[$"D{i + 4}"].Value = status;
    // Color code status
    if (status == "REORDER")
    {
        inventorySheet[$"D{i + 4}"].Style.Font.Color = "#FF0000";
    }
}
// Create summary sheet referencing other sheets
WorkSheet summarySheet = companyReport.CreateWorkSheet("Summary");
summarySheet["A1"].Value = "Company Overview";
summarySheet["A3"].Value = "Metric";
summarySheet["B3"].Value = "Value";
summarySheet["A4"].Value = "Total Q1 Sales";
summarySheet["B4"].Formula = "=SUM(Sales!B4:B7)";
summarySheet["A5"].Value = "Total Q2 Sales";
summarySheet["B5"].Formula = "=SUM(Sales!C4:C7)";
summarySheet["A6"].Value = "Products Need Reorder";
summarySheet["B6"].Formula = "=COUNTIF(Inventory!D4:D6,\"REORDER\")";
// Format all sheets consistently
foreach (WorkSheet sheet in companyReport.WorkSheets)
{
    // Format headers
    sheet["A1"].Style.Font.Bold = true;
    sheet["A1"].Style.Font.Height = 14;
    var headerRow = sheet["A3:D3"];
    headerRow.Style.Font.Bold = true;
    headerRow.Style.SetBackgroundColor("#E7E6E6");
}
// Save multi-sheet workbook
companyReport.SaveAs("CompanyReport.xlsx");
Imports System

' Create a multi-sheet workbook
Dim companyReport As WorkBook = WorkBook.Create()
' Create department sheets
Dim salesSheet As WorkSheet = companyReport.CreateWorkSheet("Sales")
Dim inventorySheet As WorkSheet = companyReport.CreateWorkSheet("Inventory")
Dim hrSheet As WorkSheet = companyReport.CreateWorkSheet("HR Metrics")
' Populate Sales sheet
salesSheet("A1").Value = "Sales Dashboard"
salesSheet("A3").Value = "Region"
salesSheet("B3").Value = "Q1 Sales"
salesSheet("C3").Value = "Q2 Sales"
Dim regions As String() = {"North", "South", "East", "West"}
Dim q1Sales As Decimal() = {250000D, 180000D, 220000D, 195000D}
Dim q2Sales As Decimal() = {275000D, 195000D, 240000D, 210000D}
For i As Integer = 0 To regions.Length - 1
    salesSheet($"A{i + 4}").Value = regions(i)
    salesSheet($"B{i + 4}").Value = q1Sales(i)
    salesSheet($"C{i + 4}").Value = q2Sales(i)
Next
' Populate Inventory sheet
inventorySheet("A1").Value = "Inventory Status"
inventorySheet("A3").Value = "Product"
inventorySheet("B3").Value = "Stock Level"
inventorySheet("C3").Value = "Reorder Point"
inventorySheet("D3").Value = "Status"
' Add inventory data with conditional status
Dim products As String() = {"Widget A", "Widget B", "Widget C"}
Dim stock As Integer() = {150, 45, 200}
Dim reorderPoint As Integer() = {100, 50, 75}
For i As Integer = 0 To products.Length - 1
    inventorySheet($"A{i + 4}").Value = products(i)
    inventorySheet($"B{i + 4}").Value = stock(i)
    inventorySheet($"C{i + 4}").Value = reorderPoint(i)
    ' Status based on stock level
    Dim status As String = If(stock(i) <= reorderPoint(i), "REORDER", "OK")
    inventorySheet($"D{i + 4}").Value = status
    ' Color code status
    If status = "REORDER" Then
        inventorySheet($"D{i + 4}").Style.Font.Color = "#FF0000"
    End If
Next
' Create summary sheet referencing other sheets
Dim summarySheet As WorkSheet = companyReport.CreateWorkSheet("Summary")
summarySheet("A1").Value = "Company Overview"
summarySheet("A3").Value = "Metric"
summarySheet("B3").Value = "Value"
summarySheet("A4").Value = "Total Q1 Sales"
summarySheet("B4").Formula = "=SUM(Sales!B4:B7)"
summarySheet("A5").Value = "Total Q2 Sales"
summarySheet("B5").Formula = "=SUM(Sales!C4:C7)"
summarySheet("A6").Value = "Products Need Reorder"
summarySheet("B6").Formula = "=COUNTIF(Inventory!D4:D6,""REORDER"")"
' Format all sheets consistently
For Each sheet As WorkSheet In companyReport.WorkSheets
    ' Format headers
    sheet("A1").Style.Font.Bold = True
    sheet("A1").Style.Font.Height = 14
    Dim headerRow = sheet("A3:D3")
    headerRow.Style.Font.Bold = True
    headerRow.Style.SetBackgroundColor("#E7E6E6")
Next
' Save multi-sheet workbook
companyReport.SaveAs("CompanyReport.xlsx")
$vbLabelText   $csharpLabel

Bu örnek, tamamlanmış bir çok sayfalı rapor oluşturur. Her bir çalışma sayfası belirli bir amaca hizmet eder: satış verileri, envanter takibi ve İK metrikleri. Özet sayfası, önemli metrikleri sayfalar arası formüller kullanarak birleştirir. Dikkat edin, formüllerde kullanılan sayfa referans sözdizimi 'Sales!B4:B7', Satış sayfasındaki B4 ila B7 hücrelerine atıfta bulunur.

Envanter sayfası, anlık dikkat gerektiren düşük stoklu ürünleri kırmızıya boyayarak koşullu mantığı göstermektedir. foreach döngüsü, tüm sayfalar boyunca tutarlı biçimlendirme uygular, çalışma kitabı genelinde profesyonel bir görünüm korur. Kağıt isimleri Excel'de sekme olarak görünür, kullanıcıların farklı veri görünümleri arasında kolayca gezinmelerini sağlar.

Excel Oluşturma için En İyi Uygulamalar Nelerdir?

C#, bellek kullanımı, hata yönetimi ve dağıtım için dikkatli yaklaşımlar gerektiren verimli Excel dosyası oluşturma imkanı sunar. Bu uygulamalar, Excel elektronik tablolarını programlı olarak oluştururken güvenilirliği koruyarak uygulamalarınızın etkili bir şekilde ölçeklenmesini sağlar.

Büyük dosyalarda bellek yönetimi kritik hale gelir. Veri setlerinin tamamını belleğe yüklemek yerine, verileri parça parça işleyin:

// Process large datasets efficiently
public void ExportLargeDataset(string filename)
{
    WorkBook workbook = WorkBook.Create();
    WorkSheet sheet = workbook.CreateWorkSheet("Data");
    int rowsPerBatch = 1000;
    int currentRow = 1;
    // Process in batches
    foreach (var batch in GetDataInBatches(rowsPerBatch))
    {
        foreach (var record in batch)
        {
            sheet[$"A{currentRow}"].Value = record.Id;
            sheet[$"B{currentRow}"].Value = record.Name;
            sheet[$"C{currentRow}"].Value = record.Value;
            currentRow++;
        }
    }
    workbook.SaveAs(filename);
}
// Process large datasets efficiently
public void ExportLargeDataset(string filename)
{
    WorkBook workbook = WorkBook.Create();
    WorkSheet sheet = workbook.CreateWorkSheet("Data");
    int rowsPerBatch = 1000;
    int currentRow = 1;
    // Process in batches
    foreach (var batch in GetDataInBatches(rowsPerBatch))
    {
        foreach (var record in batch)
        {
            sheet[$"A{currentRow}"].Value = record.Id;
            sheet[$"B{currentRow}"].Value = record.Name;
            sheet[$"C{currentRow}"].Value = record.Value;
            currentRow++;
        }
    }
    workbook.SaveAs(filename);
}
' Process large datasets efficiently
Public Sub ExportLargeDataset(filename As String)
    Dim workbook As WorkBook = WorkBook.Create()
    Dim sheet As WorkSheet = workbook.CreateWorkSheet("Data")
    Dim rowsPerBatch As Integer = 1000
    Dim currentRow As Integer = 1
    ' Process in batches
    For Each batch In GetDataInBatches(rowsPerBatch)
        For Each record In batch
            sheet($"A{currentRow}").Value = record.Id
            sheet($"B{currentRow}").Value = record.Name
            sheet($"C{currentRow}").Value = record.Value
            currentRow += 1
        Next
    Next
    workbook.SaveAs(filename)
End Sub
$vbLabelText   $csharpLabel

Hata yönetimi, Excel dosyaları oluşturulurken uygulama çökmelerini önler ve anlamlı geri bildirim sağlar:

try
{
    WorkBook workbook = WorkBook.Create();
    // Excel generation code
    workbook.SaveAs("output.xlsx");
}
catch (Exception ex)
{
    // Log the error
    Console.WriteLine($"Excel generation failed: {ex.Message}");
    // Implement appropriate recovery or notification
}
try
{
    WorkBook workbook = WorkBook.Create();
    // Excel generation code
    workbook.SaveAs("output.xlsx");
}
catch (Exception ex)
{
    // Log the error
    Console.WriteLine($"Excel generation failed: {ex.Message}");
    // Implement appropriate recovery or notification
}
Imports System

Try
    Dim workbook As WorkBook = WorkBook.Create()
    ' Excel generation code
    workbook.SaveAs("output.xlsx")
Catch ex As Exception
    ' Log the error
    Console.WriteLine($"Excel generation failed: {ex.Message}")
    ' Implement appropriate recovery or notification
End Try
$vbLabelText   $csharpLabel

Web uygulamaları için, Excel dosyalarını bellek içinde oluşturun ve kullanıcılara yayınlayın:

// ASP.NET Core example
public IActionResult DownloadExcel()
{
    WorkBook workbook = GenerateReport();
    var stream = new MemoryStream();
    workbook.SaveAs(stream);
    stream.Position = 0;
    return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx");
}
// ASP.NET Core example
public IActionResult DownloadExcel()
{
    WorkBook workbook = GenerateReport();
    var stream = new MemoryStream();
    workbook.SaveAs(stream);
    stream.Position = 0;
    return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx");
}
Imports System.IO
Imports Microsoft.AspNetCore.Mvc

Public Function DownloadExcel() As IActionResult
    Dim workbook As WorkBook = GenerateReport()
    Dim stream As New MemoryStream()
    workbook.SaveAs(stream)
    stream.Position = 0
    Return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx")
End Function
$vbLabelText   $csharpLabel

Dağıtım konuları, sorunsuz üretim operasyonlarını sağlar. IronXL, yükseltilmiş izinler olmadan kısıtlı ortamlarda çalışır, bu da onu paylaşımlı barındırma ve konteynerleştirilmiş dağıtımlar için uygun hale getirir. IronXL lisans dosyasını dağıtım paketine ekleyin ve gerektiğinde geçici dosya işlemleri için uygulamanızın yazma izinlerine sahip olduğundan emin olun. Ek dağıtım rehberi için, dağıtım belgelendirmesine bakın.

Sonuç

IronXL, C# dilinde Excel dosyası oluşturmayı karmaşık bir meydan okumadan basit bir kodlamaya dönüştürür. Microsoft Office bağımlılıkları olmadan, çalışma kitapları oluşturmayı, hücreleri doldurmayı, biçimlendirme uygulamayı, formüller kullanmayı ve veritabanı verilerini dışa aktarmayı öğrendiniz. Bu yöntemler, programlı olarak Excel dosyaları oluşturmak için Windows, Linux ve bulut platformları genelinde tutarlı olarak çalışır.

C# uygulamalarınızda Excel üretimini uygulamaya hazır mısınız? Ücretsiz denemenize başlayın veya ileri seviye özellikler için kapsamlı API belgelendirmesini keşfedin. Üretime yönelik dağıtımlar için, proje gereksinimlerinize uygun lisanslama seçeneklerine bakın.

C# Kullanarak IronXL ile Excel Dosyası Oluşturma: Görsel 11 - Lisanslama

Sıkça Sorulan Sorular

IronXL nedir?

IronXL, Microsoft Office veya karmaşık COM Interop gerektirmeden .NET uygulamalarında Excel dosyaları oluşturmak, okumak ve düzenlemek için güçlü bir kütüphanedir.

IronXL kullanarak C# dilinde Excel dosyalarını nasıl oluşturabilirim?

IronXL ile, kullanıcı dostu API'sini kullanarak C# dilinde programlı olarak Excel dosyaları oluşturabilirsiniz. Bu, hesap tabloları oluşturmayı, biçimlendirme uygulamayı ve veritabanları ile entegrasyon sağlamayı içerir.

IronXL'yi kullanmak için Microsoft Office yüklemem gerekiyor mu?

Hayır, IronXL, Microsoft Office gerektirmez. Office bağımlılıkları olmaksızın Excel dosyaları oluşturma ve manipülasyona olanak tanır.

IronXL hem XLS hem de XLSX dosya formatlarını destekliyor mu?

Evet, IronXL hem XLS hem de XLSX dosya formatlarını destekler ve böylece geniş bir Excel dosyası aralığı ile sorunsuz çalışmayı olanak tanır.

IronXL, rapor oluşturmak ve veri dışa aktarmak için uygun mu?

Kesinlikle, IronXL, güçlü özellikleri ve sorunsuz entegrasyon yetenekleri sayesinde rapor oluşturma ve veri dışa aktarma için idealdir.

IronXL ne tür biçimlendirme seçenekleri sunar?

IronXL hücre stil tercihleri, koşullu biçimlendirme ve daha fazlası dahil olmak üzere gelişmiş biçimlendirme seçenekleri sunar ve böylece görsel olarak hoş ve iyi organize edilmiş Excel belgeleri oluşturmanıza olanak tanır.

Elektronik tablo üretimini IronXL ile otomatikleştirebilir miyim?

Evet, IronXL, hesap tablolarının oluşturulmasını otomatikleştirme süreçlerini mümkün kılarak büyük veri kümelerini ve tekrarlayan işleri verimli bir şekilde yönetmeyi kolaylaştırır.

IronXL, Visual Basic ile olduğu gibi C# ile de uyumlu mu?

Evet, IronXL, C# ve Visual Basic ile birlikte kullanılabilir, bu da farklı programlama dilleriyle .NET'te çalışan geliştiriciler için esneklik sağlar.

IronXL, veritabanlarıyla nasıl bütünleşir?

IronXL, veritabanlarına kolay entegrasyon sağlar, Excel dosyaları ve veritabanı sistemleri arasında veri alımını ve aktarımını minimum çabayla gerçekleştirmenizi sağlar.

.NET uygulamalarında IronXL kullanımı için bir öğretici nerede bulabilirim?

Iron Software web sitesinde, .NET uygulamaları için IronXL kullanımı üzerine kapsamlı bir öğretici bulabilirsiniz, bu öğretici temelden ileri düzey Excel dosyası oluşturma ve işleme işlemlerine rehberlik eder.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

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