Altbilgi içeriğine atla
IRONXL KULLANARAK

IronXL Kullanarak C# ile Excel Dosyaları Nasıl Oluşturulur

C# dilinde programatik olarak Excel çalışma sayfası dosyalarını oluşturmak geleneksel olarak Microsoft Office kurulumunu veya karmaşık COM Interop gerektiriyordu. IronXL bunu tamamen değiştirir ve Excel dosyaları oluşturmak için basit bir API sunarak Office bağımlılıklarına ihtiyaç duymadan. 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şturuyor, verileri (XLS veya XLSX dosyaları) dışa aktarıyor veya elektronik tablo oluşturmayı otomatikleştiriyor olun, siz .NET uygulamaları içinde Excel ile çalışma konusundaki temel teknikleri öğreneceksiniz.

C#'ta IronXL Kullanarak Excel Dosyasını Nasıl Oluşturulur: Görüntü 1 - IronXL

Microsoft Office Olmadan Neden Excel Dosyaları 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 çapraz platform uyumluluğu, bir kez yazmanız ve her yere dağıtmanız anlamına gelir, .NET Framework, .NET Core veya .NET 10 uygulamalarını hedeflemeniz fark etmeksizin.

C#'ta IronXL Kullanarak Excel Dosyasını Nasıl Oluşturulur: Görüntü 2 - Çapraz Platform

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, uygulamanızın işlem alanında hafızada her şeyi işler, bu da daha hızlı yürütme ve programatik olarak Excel dosyası oluştururken daha düşük kaynak tüketimi sağlar.

Dağıtım, IronXL tek bir NuGet paketi olarak gönderildiğinden daha kolay hale gelir. Kayıt girdileri yok, COM kaydı yok ve sürdürülecek Office hizmet paketleri yok. Devamlı entegrasyon hatlarınız sürtünmesiz ç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. Yine de, bu yaklaşım daha fazla elle ç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#'ta IronXL Kullanarak Excel Dosyasını Nasıl Oluşturulur: Görüntü 3 - Özellikler

IronXL C# Projesine Nasıl Kurulur?

IronXL'i kurmak Visual Studio'da NuGet Paket Yöneticisi üzerinden sadece birkaç an alır. Çözüm Gezgini'nde projenize sağ tıklayın ve 'Manage NuGet Packages'ı seçin. 'IronXL.Excel'i arayıp yükleyin. Paket, C# içinde Excel dosyaları oluşturmak için gereken tüm bağımlılıkları otomatik olarak içerir.

Paket Yöneticisi Konsolu veya .NET CLI üzerinden yüklemek için aşağıdaki komutlardan birini kullanın:

Install-Package IronXL.Excel

C#'ta IronXL Kullanarak Excel Dosyasını Nasıl Oluşturulur: Görüntü 4 - Kurulum

Kütüphanenin hazır olduğunu doğrulamak için bu basit testi uygulayın:

using IronXL;
// Create an in-memory workbook
var workbook = WorkBook.Create();
Console.WriteLine("IronXL installed successfully!");
using IronXL;
// Create an in-memory workbook
var workbook = WorkBook.Create();
Console.WriteLine("IronXL installed successfully!");
Imports IronXL

' Create an in-memory workbook
Dim workbook = WorkBook.Create()
Console.WriteLine("IronXL installed successfully!")
$vbLabelText   $csharpLabel

Bu hatasız çalışıyorsa, 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 NuGet kurulum belgelendirmesine bakın.

Çıktı

C#'ta IronXL Kullanarak Excel Dosyasını Nasıl Oluşturulur: Görüntü 5 - Konsol Çıktısı

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

IronXL ile Excel dosyaları oluşturmak, tüm Excel işlemlerine açılan kapınız olan WorkBook sınıfı ile başlar. Kütüphane, modern XLSX ve eski XLS formatlarını destekler, böylece C#'da bir Excel dosyası oluşturduğunuzda farklı gereksinimler için esneklik sağlar.

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 header row
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 header row
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 header row
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ı ExcelFileFormat enumunu kullanarak belirtirsiniz -- 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 dosya özelliklerinde görünen belge bilgilerini eklemenize olanak tanır.

CreateWorkSheet() yöntemi, belirtilen isimle 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, tamamlanan Excel dosyasını disk üzerine yazar. Daha fazla çalışma sayfası işlemi için Excel dosyası yazma kılavuzuna göz atın.

Çıktı

C#'ta IronXL Kullanarak Excel Dosyasını Nasıl Oluşturulur: Görüntü 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, bir Excel dosyasına yazarken veri senaryonuz için en verimli yaklaşımı seçmenize yardımcı olur.

using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
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 at once
worksheet["B1:B3"].Value = "Active";
// Using numeric indices (0-based row, 0-based column)
worksheet.SetCellValue(0, 2, "Department"); // C1
worksheet.SetCellValue(1, 2, "Sales");       // C2
worksheet.SetCellValue(2, 2, "Marketing");   // C3
// Array-based header 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("EmployeeData.xlsx");
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
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 at once
worksheet["B1:B3"].Value = "Active";
// Using numeric indices (0-based row, 0-based column)
worksheet.SetCellValue(0, 2, "Department"); // C1
worksheet.SetCellValue(1, 2, "Sales");       // C2
worksheet.SetCellValue(2, 2, "Marketing");   // C3
// Array-based header 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("EmployeeData.xlsx");
Imports IronXL

Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
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 at once
worksheet("B1:B3").Value = "Active"
' Using numeric indices (0-based row, 0-based column)
worksheet.SetCellValue(0, 2, "Department") ' C1
worksheet.SetCellValue(1, 2, "Sales") ' C2
worksheet.SetCellValue(2, 2, "Marketing") ' C3
' Array-based header 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("EmployeeData.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. Menzil atamaları ('B1:B3'), kolonları başlatmak veya varsayılan değerler uygulamak için ideal olan birden fazla hücreyi aynı değere verimli bir şekilde ayarlar.

IronXL, farklı veri türlerini akıllıca işler. Ondalıklı sayılar finansal veriler için hassasiyeti korur, DateTime nesneleri Excel tarihleri olarak düzgün formatlanır, ve booleanlar TRUE/FALSE şeklinde 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. Büyük veri kümeleri için, daha fazla model için veri içeme kılavuzuna göz atın.

Çıktı

C#'ta IronXL Kullanarak Excel Dosyasını Nasıl Oluşturulur: Görüntü 7 - Excel Çıktısı

Excel Dosyalarına Profesyonel Biçimlendirmeyi Nasıl Uygularsınız?

Profesyonel Excel dosyaları ham veriden fazlasını gerektirir. IronXL'nin stil API'si, basit elektronik tabloları biçimlendirme, renkler ve görsel hiyerarşi aracılığıyla cilalı iş belgelerine dönüştürür. Elektronik tablo belgenizin her görsel yönünü kontrol etmek için hücre biçimlendirmesi uygulayabilirsiniz.

using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
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 width
// 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;
dataRange.Style.TopBorder.Color = "#000000";
dataRange.Style.BottomBorder.Color = "#000000";
// Text alignment
worksheet["A1:G1"].Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center;
// Alternating row colors for readability (banded rows)
for (int row = 2; row <= 10; row++)
{
    if (row % 2 == 0)
    {
        worksheet[$"A{row}:G{row}"].Style.SetBackgroundColor("#F2F2F2");
    }
}
workbook.SaveAs("FormattedReport.xlsx");
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
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 width
// 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;
dataRange.Style.TopBorder.Color = "#000000";
dataRange.Style.BottomBorder.Color = "#000000";
// Text alignment
worksheet["A1:G1"].Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center;
// Alternating row colors for readability (banded rows)
for (int row = 2; row <= 10; row++)
{
    if (row % 2 == 0)
    {
        worksheet[$"A{row}:G{row}"].Style.SetBackgroundColor("#F2F2F2");
    }
}
workbook.SaveAs("FormattedReport.xlsx");
Imports IronXL

Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
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 width

' 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
dataRange.Style.TopBorder.Color = "#000000"
dataRange.Style.BottomBorder.Color = "#000000"

' Text alignment
worksheet("A1:G1").Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center

' Alternating row colors for readability (banded rows)
For row As Integer = 2 To 10
    If row Mod 2 = 0 Then
        worksheet($"A{row}:G{row}").Style.SetBackgroundColor("#F2F2F2")
    End If
Next

workbook.SaveAs("FormattedReport.xlsx")
$vbLabelText   $csharpLabel

Bu biçimlendirme kodu, iş standartlarına uygun bir profesyonel 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ğlayarak hex renk kodlarını kabul eder. Yazı tipi özellikleri arasında boyut, renk, kalın, italik ve altı çizili seçenekler bulunur - bunların tümü kurumsal marka yönergelerine uygun Excel dosyaları oluşturmada önemlidir.

Sütun genişliği ayarlamaları, metin kesilmesini önler. AutoSizeColumn() içeriği otomatik olarak sığdırırken, GetColumn().Width hassas 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 de benzer desenlere uyar, Microsoft'un sayı format kodları referansında belgelenen standart Excel tarih format dizelerini kullanır.

Sınırlar, okunabilirliği artırarak veri sınırlarını tanımlar. BorderType enumu çeşitli stiller sunar: ince, orta, kalın, noktalı ve kesikli. 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. Hücre birleştirme ve diğer düzen özellikleri hakkında daha fazla bilgi için hücreleri birleştirme kılavuzuna bakın.

Çıktı

C#'ta IronXL Kullanarak Excel Dosyasını Nasıl Oluşturulur: Görüntü 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.

using IronXL;
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 and add row total formulas
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];
    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";
// Average calculation
budget["A10"].Value = "Average Spending";
budget["B10"].Formula = "=AVERAGE(B2:B6)";
// Evaluate all formulas before saving
workbook.EvaluateAll();
workbook.SaveAs("Budget.xlsx");
using IronXL;
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 and add row total formulas
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];
    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";
// Average calculation
budget["A10"].Value = "Average Spending";
budget["B10"].Formula = "=AVERAGE(B2:B6)";
// Evaluate all formulas before saving
workbook.EvaluateAll();
workbook.SaveAs("Budget.xlsx");
Imports IronXL

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 and add row total formulas
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)
    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"
' Average calculation
budget("A10").Value = "Average Spending"
budget("B10").Formula = "=AVERAGE(B2:B6)"
' Evaluate all formulas before saving
workbook.EvaluateAll()
workbook.SaveAs("Budget.xlsx")
$vbLabelText   $csharpLabel

Bu bütçe örneği, formüllerin pratik uygulamalarını sergiler. Formula özelliği, eşit işareti ile 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.

EvaluateAll() yöntemi, tüm formülleri işler, kitap boyunca hesaplanan değerleri günceller. Bu, dosya Excel'de açıldığında formüllerin sonuçları göstermesini sağlar. Değerlendirme olmadan, Excel kullanıcı yeniden hesaplamayı tetikleyene kadar formül metnini gösterirdi. Formül sonuçlarını okuma hakkında daha fazla bilgi için Excel dosyası okuma belgelerine bakın.

Çıktı

C#'ta IronXL Kullanarak Excel Dosyasını Nasıl Oluşturulur: Görüntü 9 - Formüller Kullanarak Excel Çıktısı

Veritabanı Verilerini Excel'e Nasıl Aktarırsınız?

Gerçek dünya uygulamaları, genellikle raporlama ve analiz için veritabanı verilerini Excel'e aktarır. IronXL, yerleşik DataTable desteği ile bu süreci basit hale getirir, C# uygulamalarından Excel'e veri aktarırken manuel alan eşlemeye olan ihtiyacı ortadan kaldırır.

using System.Data;
using IronXL;

// Simulate database retrieval (replace with 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));
    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");
DataTable salesData = GetSalesData();

// Title row
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);
}
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]);
    }
    reportSheet[$"G{row + headerRow + 1}"].Formula = $"=D{row + headerRow + 1}*E{row + headerRow + 1}";
}

// Total header
reportSheet["G3"].Value = "Total";
reportSheet["G3"].Style.Font.Bold = true;
reportSheet["G3"].Style.SetBackgroundColor("#D9E1F2");
// Format currency and date 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";
reportSheet[$"F{headerRow + 1}:F{headerRow + salesData.Rows.Count}"].FormatString = "MM/dd/yyyy";

// 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";

for (int col = 0; col <= 6; col++) { reportSheet.AutoSizeColumn(col); }
reportWorkbook.EvaluateAll();
reportWorkbook.SaveAs("DatabaseExport.xlsx");
using System.Data;
using IronXL;

// Simulate database retrieval (replace with 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));
    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");
DataTable salesData = GetSalesData();

// Title row
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);
}
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]);
    }
    reportSheet[$"G{row + headerRow + 1}"].Formula = $"=D{row + headerRow + 1}*E{row + headerRow + 1}";
}

// Total header
reportSheet["G3"].Value = "Total";
reportSheet["G3"].Style.Font.Bold = true;
reportSheet["G3"].Style.SetBackgroundColor("#D9E1F2");
// Format currency and date 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";
reportSheet[$"F{headerRow + 1}:F{headerRow + salesData.Rows.Count}"].FormatString = "MM/dd/yyyy";

// 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";

for (int col = 0; col <= 6; col++) { reportSheet.AutoSizeColumn(col); }
reportWorkbook.EvaluateAll();
reportWorkbook.SaveAs("DatabaseExport.xlsx");
Imports System.Data
Imports IronXL

' Simulate database retrieval (replace with 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))
    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")
Dim salesData As DataTable = GetSalesData()

' Title row
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
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
    reportSheet($"G{row + headerRow + 1}").Formula = $"=D{row + headerRow + 1}*E{row + headerRow + 1}"
Next

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

' Format currency and date 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"
reportSheet($"F{headerRow + 1}:F{headerRow + salesData.Rows.Count}").FormatString = "MM/dd/yyyy"

' 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"

For col As Integer = 0 To 6
    reportSheet.AutoSizeColumn(col)
Next
reportWorkbook.EvaluateAll()
reportWorkbook.SaveAs("DatabaseExport.xlsx")
$vbLabelText   $csharpLabel

Bu örnek, eksiksiz bir veritabanından Excel'e 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ıyla 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 veriler değişirse bu değerlerin güncellenmesini sağlar. DataSet'ler ve daha büyük veri yapıları ile çalışmak için Excel ile DataSet dönüşüm kılavuzuna bakın.

Çıktı

C#'ta IronXL Kullanarak Excel Dosyasını Nasıl Oluşturulur: Görüntü 10 - Veritabanı İhracatından Excel Çıktısı

Excel raporlarını üretime aktarmanız mı 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. Sadece birkaç satır kodla çalışma kitabı sayfalarını açabilir ve yönetebilirsiniz.

using IronXL;
WorkBook companyReport = WorkBook.Create();
// Create department sheets
WorkSheet salesSheet = companyReport.CreateWorkSheet("Sales");
WorkSheet inventorySheet = companyReport.CreateWorkSheet("Inventory");
WorkSheet summarySheet = companyReport.CreateWorkSheet("Summary");

// 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";
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];
    string status = stock[i] <= reorderPoint[i] ? "REORDER" : "OK";
    inventorySheet[$"D{i + 4}"].Value = status;
    if (status == "REORDER")
        inventorySheet[$"D{i + 4}"].Style.Font.Color = "#FF0000";
}

// Summary sheet with cross-sheet formulas
summarySheet["A1"].Value = "Company Overview";
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\")";

// Apply consistent formatting across all sheets
foreach (WorkSheet sheet in companyReport.WorkSheets)
{
    sheet["A1"].Style.Font.Bold = true;
    sheet["A1"].Style.Font.Height = 14;
}
companyReport.SaveAs("CompanyReport.xlsx");
using IronXL;
WorkBook companyReport = WorkBook.Create();
// Create department sheets
WorkSheet salesSheet = companyReport.CreateWorkSheet("Sales");
WorkSheet inventorySheet = companyReport.CreateWorkSheet("Inventory");
WorkSheet summarySheet = companyReport.CreateWorkSheet("Summary");

// 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";
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];
    string status = stock[i] <= reorderPoint[i] ? "REORDER" : "OK";
    inventorySheet[$"D{i + 4}"].Value = status;
    if (status == "REORDER")
        inventorySheet[$"D{i + 4}"].Style.Font.Color = "#FF0000";
}

// Summary sheet with cross-sheet formulas
summarySheet["A1"].Value = "Company Overview";
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\")";

// Apply consistent formatting across all sheets
foreach (WorkSheet sheet in companyReport.WorkSheets)
{
    sheet["A1"].Style.Font.Bold = true;
    sheet["A1"].Style.Font.Height = 14;
}
companyReport.SaveAs("CompanyReport.xlsx");
Imports IronXL

Dim companyReport As WorkBook = WorkBook.Create()
' Create department sheets
Dim salesSheet As WorkSheet = companyReport.CreateWorkSheet("Sales")
Dim inventorySheet As WorkSheet = companyReport.CreateWorkSheet("Inventory")
Dim summarySheet As WorkSheet = companyReport.CreateWorkSheet("Summary")

' 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() = {250000, 180000, 220000, 195000}
Dim q2Sales As Decimal() = {275000, 195000, 240000, 210000}
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"
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)
    Dim status As String = If(stock(i) <= reorderPoint(i), "REORDER", "OK")
    inventorySheet($"D{i + 4}").Value = status
    If status = "REORDER" Then
        inventorySheet($"D{i + 4}").Style.Font.Color = "#FF0000"
    End If
Next

' Summary sheet with cross-sheet formulas
summarySheet("A1").Value = "Company Overview"
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"")"

' Apply consistent formatting across all sheets
For Each sheet As WorkSheet In companyReport.WorkSheets
    sheet("A1").Style.Font.Bold = True
    sheet("A1").Style.Font.Height = 14
Next

companyReport.SaveAs("CompanyReport.xlsx")
$vbLabelText   $csharpLabel

Bu örnek, tamamlanmış bir çok sayfalı rapor oluşturur. Her çalışma sayfası belli bir amaca hizmet eder: satış verileri, envanter takibi ve özet görünüm. Özet sayfası, önemli metrikleri sayfalar arası formüller kullanarak birleştirir. Sayfa referans sözdizimine dikkat edin -- 'Sales!B4:B7', Satış sayfasındaki B4 ila B7 hücrelerini belirtir.

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ü, kitap boyunca profesyonel bir görünüm sağlayarak tüm sayfalar üzerinde tutarlı bir biçimlendirme uygular. Sayfa adları Excel'de sekme olarak görünür, böylece kullanıcılar farklı veri görünümleri arasında kolayca gezinebilirler.

C#'da Excel Dosyası Oluşturma İçin En İyi Yöntemler 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. Verileri toplu olarak işleyin, bir kerede tüm veri kümelerini yüklemek yerine. Aşağıdaki desen, yüksek hacimli dışa aktarmalar için bellek kullanımını öngörülebilir tutar:

using IronXL;
WorkBook workbook = WorkBook.Create();
WorkSheet sheet = workbook.CreateWorkSheet("Data");
int rowsPerBatch = 1000;
int currentRow = 2;
sheet["A1"].Value = "ID";
sheet["B1"].Value = "Name";
sheet["C1"].Value = "Value";
// Process records in manageable 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("LargeDataset.xlsx");
using IronXL;
WorkBook workbook = WorkBook.Create();
WorkSheet sheet = workbook.CreateWorkSheet("Data");
int rowsPerBatch = 1000;
int currentRow = 2;
sheet["A1"].Value = "ID";
sheet["B1"].Value = "Name";
sheet["C1"].Value = "Value";
// Process records in manageable 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("LargeDataset.xlsx");
Imports IronXL

Dim workbook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Data")
Dim rowsPerBatch As Integer = 1000
Dim currentRow As Integer = 2
sheet("A1").Value = "ID"
sheet("B1").Value = "Name"
sheet("C1").Value = "Value"
' Process records in manageable 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("LargeDataset.xlsx")
$vbLabelText   $csharpLabel

Web uygulamaları için, Excel dosyalarını bellek içinde oluşturun ve kullanıcıya doğrudan akıtın, geçici dosyaları diske yazmak yerine. Çöküntüleri önlemek ve anlamlı geri bildirim sağlamak için her zaman oluşturma mantığını hata işleme içine alın:

// ASP.NET Core controller action with error handling
IActionResult DownloadExcel()
{
    try
    {
        WorkBook workbook = WorkBook.Create();
        WorkSheet sheet = workbook.CreateWorkSheet("Report");
        sheet["A1"].Value = "Report Data";
        // Populate report data here...
        var stream = new MemoryStream();
        workbook.SaveAs(stream);
        stream.Position = 0;
        return File(stream,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "report.xlsx");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Excel generation failed: {ex.Message}");
        return StatusCode(500, "Failed to generate Excel file.");
    }
}
// ASP.NET Core controller action with error handling
IActionResult DownloadExcel()
{
    try
    {
        WorkBook workbook = WorkBook.Create();
        WorkSheet sheet = workbook.CreateWorkSheet("Report");
        sheet["A1"].Value = "Report Data";
        // Populate report data here...
        var stream = new MemoryStream();
        workbook.SaveAs(stream);
        stream.Position = 0;
        return File(stream,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "report.xlsx");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Excel generation failed: {ex.Message}");
        return StatusCode(500, "Failed to generate Excel file.");
    }
}
Imports System
Imports System.IO
Imports Microsoft.AspNetCore.Mvc

Public Class YourController
    Inherits Controller

    Public Function DownloadExcel() As IActionResult
        Try
            Dim workbook As WorkBook = WorkBook.Create()
            Dim sheet As WorkSheet = workbook.CreateWorkSheet("Report")
            sheet("A1").Value = "Report Data"
            ' Populate report data here...
            Dim stream As New MemoryStream()
            workbook.SaveAs(stream)
            stream.Position = 0
            Return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx")
        Catch ex As Exception
            Console.WriteLine($"Excel generation failed: {ex.Message}")
            Return StatusCode(500, "Failed to generate Excel file.")
        End Try
    End Function
End Class
$vbLabelText   $csharpLabel

Aşağıdaki tablo, temel en iyi uygulamaları ve ne zaman uygulanacağını özetler:

C# Dilinde Excel Oluşturma için IronXL En İyi Uygulamaları
Senaryo Önerilen Yaklaşım Fayda
Large datasets (>10,000 rows) Parça yazmalarıyla toplu işleme Azaltılmış bellek ayak izi
Web uygulama indirmeleri Üzerinde çalıştığınız geçici dosyalar yerine MemoryStream kullanımı Disk IO yok, daha hızlı yanıt
Prodüksiyon dağıtımı Geçerli IronXL lisans anahtarını ekleyin Oluşturulan dosyalarda filigran yok
Para birimi ve tarihler FormatString özelliğini kullan Excel'de doğru yerel görünüm
Dinamik raporlar EvaluateAll()'ı SaveAs()'tan önce çağırın Formüller hesaplanmış değerler gösterir

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. Dağıtım paketinizde IronXL lisans dosyasını dahil edin ve uygulamanızın ihtiyaç duyulan geçici dosya işlemleri için yazma izinlerine sahip olduğundan emin olun. Ek dağıtım rehberi için IronXL özellikler genel bakışını ve tam API belgelendirmesini inceleyin.

Buradan Nereye Gidebilirsiniz?

IronXL, C# dilinde Excel dosyası oluşturmayı karmaşık bir meydan okumadan basit bir kodlamaya dönüştürür. Çalışma kitapları oluşturmayı, hücreleri doldurmayı, biçimlendirmeyi uygulamayı, formülleri kullanmayı, veritabanı verilerini dışa aktarmayı ve çoklu çalışma sayfalarını yönetmeyi öğrendiniz - tümü Microsoft Office bağımlılığı olmadan. Bu teknikler, .NET 10'u hedefleyen Windows, Linux ve bulut platformları genelinde tutarlılıkla çalışır.

Daha derine inmek için, mevcut Excel dosyalarını okuma ve değiştirme için IronXL nasıl yapılır kılavuzlarına veya üretimde başlamanız için deneme lisansı sayfasına göz atın. Proje gereksinimlerinize ve ölçeğinize uygun lisanslama seçeneklerini görüntüleyin.

C#'ta IronXL Kullanarak Excel Dosyasını Nasıl Oluşturulur: Görüntü 11 - Lisanslama

Sıkça Sorulan Sorular

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

IronXL kullanarak C# dilinde Excel dosyaları oluşturabilirsiniz, bu da Microsoft Office kurulumuna veya karmaşık COM Interop'a gerek kalmadan Excel dosyaları oluşturmanızı sağlar.

C#'da Excel dosyalarıyla çalışmak için Microsoft Office gerekli mi?

Hayır, Microsoft Office gerektirilmez. IronXL, C# ile Office bağımlılıkları olmadan Excel dosyaları oluşturma ve manipülasyonuna olanak tanır.

Geleneksel yöntemlere göre IronXL kullanmanın avantajları nelerdir?

IronXL, Excel dosyaları oluşturmada Microsoft Office ve karmaşık COM Interop gereksinimlerini ortadan kaldıran, basit bir API sunarak Excel dosya oluşturma ve manipülasyon sürecini basitleştirir.

IronXL kullanarak Excel dosyalarını veritabanlarıyla entegre edebilir miyim?

Evet, IronXL veri dışa aktarma işlemini verimli bir şekilde gerçekleştirebilmenizi sağlayan veritabanı entegrasyonları gibi üstün işlemleri destekler.

IronXL ile hangi dosya formatları üretilebilir?

IronXL, hem XLS hem de XLSX dosya formatlarını oluşturmanıza olanak tanır ve böylece farklı Excel dosya oluşturma ihtiyaçları için esneklik sağlar.

IronXL, Excel dosyalarında ileri düzey biçimlendirmeyi destekliyor mu?

Evet, IronXL gelişmiş biçimlendirme özellikleri sunarak Excel dosyalarınızın görünümünü ve yapısını özelleştirmenize olanak tanır.

IronXL kullanarak hesap tablosu oluşturmayı otomatikleştirmek mümkün mü?

Evet, IronXL rapor oluşturma ve veri dışa aktarma gibi süreçleri otomatikleştirerek hesap tabloları oluşturmayı kolaylaştırmak için araçlar ve teknikler sunar.

Excel dosyalarını .NET uygulamalarında kullanarak raporları nasıl oluşturabilirim?

IronXL, Excel dosyalarını .NET uygulamaları içinde doğrudan oluşturarak rapor oluşturmanızı kolaylaştırır, veri sunumu için güçlü bir çözüm sunar.

C# dilinde Excel ile çalışmak için hangi teknikler esastır?

IronXL kullanarak C# dilinde Excel ile çalışmak için temel hesap tablosu oluşturma, gelişmiş biçimlendirme ve veritabanı entegrasyonu gibi önemli teknikler bulunmaktadır.

IronXL kullanarak C# dilinde nasıl belge bulabilirim?

Iron Software web sitesinde, C# dilinde IronXL kullanılması ile ilgili kapsamlı belgeler bulabilirsiniz; çok sayıda kullanım durumu için eğitim ve örnekler içerir.

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