IronXL kullanarak C#'da Excel Dosyası Nasıl Üretilir
Geleneksel olarak C# veya Visual Basic'te programatik olarak Excel çalışma sayfası dosyaları oluşturmak için bir Microsoft Office kurulumu veya karmaşık COM Interop gerekiyordu. IronXL bunu tamamen değiştiriyor, herhangi bir Office bağımlılığı olmadan Excel uygulama dosyaları oluşturan basit bir API sunuyor. Bu ders, IronXL kullanarak C#'ta Excel dosyalari oluşturmanin her asamasini kapsar, temel tablo yaratmadan gelişmiş formatlama ve veri tabani entegrasyonuna kadar. Rapor oluşturuyor, veri (XLS veya XLSX dosyası) dışa aktarıyor veya elektronik tablo oluşturmayı otomatikleştiriyorsanız, .NET uygulamalarında Excel ile çalışma konusunda önemli teknikleri öğreneceksiniz.

Neden Microsoft Office Olmadan Excel Çalışma Sayfası Dosyaları Oluşturmalıyız?
Office bagimliliklari olmadan Excel oluşturma özellikleri geliştirmek kritik dağıtim sorunlarini cozer. Sunucu ortamlarinda lisans maliyetleri ve kaynak yukleri nedeniyle Microsoft Office nadiren yukludur. Her Office kurulumu, disk alani ve bellek ihtiyaçi acisindan onemlidir, bu da cloud dağıtımlar veya konteyner uygulanmalari icin pratik degildir.
IronXL bu kısıtlamaları bağımsız olarak çalışarak ortadan kaldırır. C# Excel dosya oluşturmaniz Windows, Linux, macOS, Docker konteynerleri veya Azure App Services uzerinde değişiklik yapmadan calisir. Bu platformlar arası uyumluluk, .NET Framework, .NET Core ya da .NET 8/9 uygulamalarını hedeflemeniz fark etmeksizin bir kez yazıp her yere dağıtma anlamına gelir.

PERFORMANS, COM Interop yuku olmadan dramatik biçimde iyilesir. Geleneksel Office otomasyonu, her işlem için ayrı işlem örnekleri oluşturur, bellek ve CPU kaynakları tüketir. IronXL, Excel dosyalarını programatik olarak oluştururken, uygulamanızın sürecindeki işlemleri bellek içi halinde işler, böylece daha hızlı yürütme ve daha düşük kaynak tüketimi sağlar.
Dağıtım, IronXL'nin tek bir NuGet paketi olarak sağlanmasıyla son derece basitleşir. Herhangi bir kayıt defteri girdisi, COM kaydı veya bakım gerektiren Office hizmet paketleri olmadan. Sürekli entegrasyon ardışık düzenleriniz sorunsuz çalışır ve Docker konteynerleri hafif kalır. Bu basitlestirilmis yaklasim, IronXL'uni popüler bir seçenek haline getirdi, ve profesyonellerin Excel otomasyonu ile ilgili deneyimlerini paylastigi çeşitli geliştirici forumlarinda ele alinmaktadir.
Bazı geliştiriciler hala Office Open XML dosya yapılarıyla doğrudan çalışmak için Microsoft'un Open XML Verimlilik Aracını keşfetmektedir. Ancak, bu yaklaşım daha fazla manuel çaba ve XML şemasının detaylı bilgisi ve Open XML SDK kurulumu gerektirir. IronXL bu karmasikliklari soyutlayarak, Excel ile programli calisma icin çok daha hizli bir yol sunar.

C# Projenize IronXL Nasıl Kurulur?
Solution Explorer'da NuGet Paket Yöneticisi üzerinden IronXL kurulumu sadece birkaç dakika sürer. Visual Studio'da, projenize sağ tıklayın ve 'NuGet Paketlerini Yönet'i seçin. 'IronXl.Excel' için arama yapın ve Yükle'ye tıklayın. Paket, C#'ta Excel dosyalarını oluşturmak için gerekli tüm bağımlılıkları otomatik olarak içerir.
Alternatif olarak, Paket Yöneticisi Konsolunu kullanın:
Install-Package IronXl.Excel

.NET CLI kullanıcıları için modern C# projeleri ile çalışma:
dotnet add package IronXl.Excel
dotnet add package IronXl.Excel
Excel dosyasının programatik olarak oluşturulduğunu doğrulamak için bu basit testi kullanı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!")
Bu kod, bellek içinde bir çalışma kitabı nesnesi oluşturur. Eğer hata olmadan çalışıyorsa, IronXL kullanıma hazır demektir. Kütüphane, mevcut projelerinizle uyumluluğu sağlamak için tüm modern .NET sürümlerini destekler. Detaylı kurulum kılavuzu ve sorun giderme için resmi dökümantasyona bakın. Başlamaya hazır mısınız? IronXL'i şimdi indirin ve dakikalar içinde Excel dosyaları oluşturmaya başlayın.
Çıktı

İlk Excel Dosyanızı Nasıl Oluşturursunuz?
IronXL ile Excel dosyaları oluşturmak, tüm Excel işlemlerine açılan kapınızdır olan WorkBook sınıfı ile başlar. Kutuphane, modern XLSX ve eski XLS formatlarini destekler, C# icinde Excel dosyalari oluştururken farkli gereksinimler icin esneklik sunar.
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")
Bu kod, Excel dosya oluşturma icin bircok temel konsepti gösterir. WorkBook.Create() metodu, bellekte yeni bir Excel dosyası başlatır. ExcelFileFormat enumunu kullanarak formatı 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 yerleştirmenize olanak tanır.
CreateWorkSheet() metodu, belirtilen adla yeni bir sayfa ekler. Excel'in tanidik hucre notasyonu (A1, B1, vb.) değer atanmasını sezgisel hale getirir. IronXL, veri turu donusumlerini otomatik olarak yonetir, tarihleri, sayilari ve metinleri acik bir sekilde atama yapmadan tanir. SaveAs() metodu, tam Excel dosyasını diske yazar. Daha fazla çalışma sayfası işlemleri için çalışma sayfası yönetimi eğitimine bakın.
Çıktı

Excel Hücrelerine Veri Nasıl Yazılır?
IronXL, Excel hücrelerini doldurmak icin bireysel hucre atamalarindan toplu alan islevlerine kadar bircok yöntem sunar. Bu yöntemleri anlamak, veri senaryonuz icin en verimli yöntemi secmenize yardimci olur.
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")
Kod, IronXL'nin esnek hücre adresleme yeteneklerini gösterir. Dize notasyonu ("A1"), Excel kullanıcıları icin dogal gelirken, numerik indeksler donguler ve dinamik oluşturmalar icin programatik kontrol sunar. Aralik atamalari ("B1:B3"), bircok hücreyi ayni degerle verimli bir sekilde ayarlayarak, sutunların başlatilmasi veya varsıyılan degerlerin uygulanmasi icin mukemmeldir.
IronXL farklı veri türlerini zekice işler. Ondalık sayılar finansal veriler için hassasiyeti korur, DateTime nesneleri Excel tarihleri olarak doğru formatlanır, ve boolenler TRUE/FALSE olarak görünür. Bu otomatik dönüştürma, manuel format kodlarini ortadan kaldirirken veri butunlugunu saglar.
Çıktı

Daha buyuk veri setleri icin bu formulu dusunun:
// 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
Bu yöntem, veri koleksiyonunuzdaki her ozelligin ilgili sutuna eslenmesini saglayarak, veri koleksiyonunuza donusur. Dize interpolasyonu ($"A{row + 2}"), başlıkları korumak için 2. satırdan başlayarak hücre adreslerini dinamik olarak oluşturur.
Profesyonel Biçim Nasıl Uygulanır?
Profesyonel Excel dosyalari sadece ham verilerden daha fazlasini gerektirir. IronXL'nin stil API'si, biçimlendirme, renkler ve görsel hiyerarşi ile basit elektronik tabloları, C#'da Excel dosyaları oluşturduğunuzda şık 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
Bu biçimlendirme kodu, entreprise standartları karşılayan bir profesyonel görünüm yaratır. Arka plan renkleri ile kalin basliklar gorunus hiyerarşisini saglar. SetBackgroundColor() metodu, renk düzeni üzerinde hassas kontrol sağlayan hex renk kodlarını kabul eder. Font özellikleri boyut, renk, kalın, italik ve altı çizili seçeneklerini içerir, bunların hepsi kurumsal markalama kılavuzlarına uyan Excel dosyaları oluşturmak için önemlidir.
Sutun genişliği ayarlamaları, metin kesilmesini onler. AutoSizeColumn() içeriği otomatik olarak sığdırırken, SetColumnWidth() kesin kontrol sağlar. Sayı biçimlendirme Excel'in biçim kodlarını kullanır. Örneğin, "$#,##0.00" para birimini binlik ayırıcılar ve iki ondalık basamak ile gösterir. Tarih biçimlendirme benzer desenleri takip eder, Microsoft'un Excel spesifikasyonlarında belgelediği gibi standart Excel tarih format dizelerini kullanır.
Kenarlar, veri sinirlarini tanimlar, okunabilirligi iyileştirir. BorderType enum çeşitli stiller sunar: ince, orta, kalın, noktalı, ve kesik. Hizalama seçenekleri başlıkları ortalar ve sayıları sağa hizalar, elektronik tablo yongalarına uygun olarak. Sik kullanilan ve "banded rows" olarak adlandırılan, yer değiştiren satır renkleri genis veri setlerinden bilgi takip eden okurlara yardimci olur. Biçimlendirilmiş Excel verileri oluşturmak için gelişmiş biçimlendirme hakkında daha fazlasını hücre düzenleme kılavuzumuzda öğrenin.
Çıktı

Excel Formülleri Programatik Olarak Nasıl Kullanılır?
Excel formülleri otomatik hesaplamalar ile hesap tablolarini canlandirir. IronXL, dinamik hesap tabloları oluşturmanızı sağlayan formül yazma ve derecelendirmeyi destekler ve bunları otomatik olarak günceller.
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")
Bu butce ornegi, formlarin pratik uygulamasini gösterir. Formula ozelligi, bir eşittir işareti ile başlayan standart Excel formül sözdizimini kabul eder. IronXL, SUM, AVERAGE, COUNT, MAX, MIN ve digerleri dahil yaygın fonksiyonlari destekler. Formullerdeki hucre referansları, Excel'deki gibi çalişır, göreceli ve mutlak referanslar dahil olmak üzere.
Satır toplam formülleri (=SUM(B{i + 2}:D{i + 2})), her kategori için üç aylık toplamları hesaplar. Dize interpolasyonu her satır için doğru hücre referanslarını dinamik olarak oluşturur. Aylık toplamlar tüm sütunları toplarken, yüzde hesaplamaları belirli hücreleri toplamlarla böler.
EvaluateAll() metodu, tüm formülleri işler ve çalışma kitabı boyunca hesaplanan değerleri günceller. Bu, Excel'de açıldığında formüllerin sonucu göstereceğini saglar. Degerlendirme olmadan, Excel yeniden hesaplamayı kullanıcı ikişik edene kadar formülleri gösterebilir.
Çıktı

Veritabanlarından Excel'e Veri Nasıl Aktarılır?
Gerçek dunya uygulamaları sık sık raporlar ve analizler icin veritabanı verilerini Excel'e aktarır. IronXL, bu süreci yerleşik DataTable desteği ile kolaylaştırır ve C# uygulamalarından Excel dosyaları oluştururken manuel alan eşleştirmeye ihtiyaç duyulmaz.
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")
Bu kapsamli örnek, C# icinde Excel dosyaları oluşturmak için tam bir veritabanı-Excel is akisini 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 esleme yaklasimi, bicimlendirme ve duzen uzerinde tam kontrol saglar ve Microsoft'un veri aktarma en iyi uygulamalari tarafından önerilir.
Kod, baslik, biçimlendirilmis baslıklar ve veri satirları ile profesyonel bir rapor oluşturur. Formülsütunları, satır toplamlarını dinamik bir şekilde hesaplar. Özet bölümü, veriler değişirse bu değerlerin güncellenmesini sağlamak için, sipariş sayısını ve geliri saymak için Excel formülleri kullanır. Para birimi ve tarih biçimlendirme iş belgesi standartlarını takip ederken, sütunların otomatik boyutlandırılması tüm içeriğin doğru şekilde görüntülenmesini sağlar. Daha büyük veri kümeleriyle başa çıkmak için performans optimizasyon rehberimizi keşfedin.
Çıktı

Excel raporlamanizi hizlandirmaniz mi gerekiyor? IronXL'ın tam potansiyelini üretim dağıtımları için ortaya çıkarmak üzere bir lisans alın.
Birden Fazla Çalışma Sayfası Nasıl Yönetilir?
Karmaşık Excel dosyaları, ilgili verileri düzenlemek için genellikle birden çok calisma sayfasi gerektirir. IronXL, calisma sayfalarini oluşturmak, erişmek ve düzenlemek icin sezgisel yöntemlerle çok sayfalı yönetimi basitlestirir.
// 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")
Bu örnek, eksiksiz bir çok sayfalı rapor oluşturur. Her bir calisma sayfasi belirli bir amacı yerine getirir: satış verileri, envanter takibi ve IK metrikleri. Ozet sayfa, önemli metrikleri sayfalar arası formüllerle birleştirir. Formüllerde "Satışlar!B4:B7" gibi sayfa referans sözdizimini fark edin, Satışlar sayfasındaki B4'ten B7'ye kadar olan hücrelere atıfta bulunur.
Envanter sayfası, düşük stoklu ürünleri kırmızı renkle göstererek koşullu mantığı sergiler. foreach döngüsü, tüm sayfalarda tutarlı biçimlendirme uygulayarak çalışma kitabı boyunca profesyonel bir görünüm sağlar. Sayfa adları Excel'de sekmeler olarak görünür, kullanıcıların farklı veri görünümleri arasında kolayca gezinmesine olanak tanır.
Excel Oluşturma Icin En Iyi Uygulamalar Nelerdir?
C#'ta verimli Excel dosyası oluşturma, bellek kullanımı, hata yönetimi ve dağıtım konularına düşünceli bir yaklaşımla gerçekleştirilir. Bu uygulamalar, Excel hesap tablolarını programlı bir şekilde oluştururken uygulamalarınızın ölçeklenebilirliğini ve güvenilirliğini korur.
Büyük dosyalarla çalışırken bellek yönetimi kritik hale gelir. Tüm veri kümelerini 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
Hata yönetimi, uygulama çökmelerini önler ve Excel dosyaları oluştururken 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
Web uygulamaları için Excel dosyalarını bellek içinde oluşturun ve kullanıcılara akış olarak gönderin:
// 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
Dağıtım dikkate almaları sorunsuz üretim işlemlerini sağlar. IronXL, artırılmış izinler olmadan kısıtlı ortamlarda çalışır, bu da onu paylaşılan barındırma ve kapsayıcılaştırılmış dağıtımlar için uygun kılar. Dağıtım paketinize IronXL lisans dosyasını dâhil edin ve gerekirse geçici dosya işlemleri için uygulamanızın yazma izinlerine sahip olduğundan emin olun. Ek dağıtım rehberliği için dağıtım dökümantasyonuna danışın.
Sonuç
IronXL, C#'ta Excel dosyası oluşturmayı karmaşık bir meydan okumadan, sade bir kodlama haline dönüştürür. Calisma kitaplari oluşturmayı, hücreleri doldurmayı, biçimlendirme uygulamayı, formüller kullanmayı ve veritabanı verilerini dışa aktarmayı öğrendiniz - bunların hepsi Microsoft Office bağımlılıkları olmadan. Excel dosyaları oluşturmak için bu teknikler, Windows, Linux ve bulut platformlarında tutarlı bir şekilde çalışır.
Excel oluşturmayı C# uygulamalarınızda uygulamaya hazır mısınız? Ücretsiz denemenizi başlatın veya gelişmiş özellikler için kapsamlı API dökümantasyonunu keşfedin. Üretim dağıtımları için, proje gereksinimlerinize uygun lisanslama seçeneklerini görüntüleyin.

Sıkça Sorulan Sorular
IronXL nedir?
IronXL, Microsoft Office veya karmaşık COM Interop'a gerek kalmadan .NET uygulamalarında Excel dosyaları oluşturmak, okumak ve düzenlemek için güçlü bir kütüphanedir.
IronXL kullanarak C#'de Excel dosyalarını nasıl oluşturabilirim?
IronXL ile, kullanıcı dostu API'sini kullanarak C#'de programatik olarak Excel dosyaları oluşturabilirsiniz. Bu, hesap tabloları oluşturmayı, biçimlendirme uygulamayı ve veritabanları ile entegrasyonu içerir.
IronXL'yi kullanmak için Microsoft Office kurulu olmalı mı?
Hayır, IronXL Microsoft Office gerektirmez. Excel dosyalarını herhangi bir Office bağımlılığı olmadan oluşturmanıza ve düzenlemenize olanak tanır.
IronXL, hem XLS hem de XLSX dosya formatlarını işleyebilir mi?
Evet, IronXL hem XLS hem de XLSX dosya formatlarını destekler, bu da Excel dosyaları ile sorunsuz bir şekilde çalışmanıza olanak tanır.
IronXL, rapor oluşturma ve veri dışa aktarımı için uygun mu?
Kesinlikle, IronXL, sağlam özellikleri ve sorunsuz entegrasyon yetenekleri sayesinde, Excel dosyalarına rapor oluşturma ve veri dışa aktarma için idealdir.
IronXL hangi biçimlendirme seçeneklerini sunar?
IronXL, hücre stilizasyonu, koşullu biçimlendirme ve daha fazlası dahil olmak üzere ileri düzey biçimlendirme seçenekleri sunar, böylece görsel olarak çekici ve iyi organize edilmiş Excel belgeleri oluşturabilirsiniz.
IronXL ile elektronik tablo oluşturmayı otomatikleştirebilir miyim?
Evet, IronXL, büyük veri kümeleri ve tekrar eden görevleri verimli bir şekilde ele almayı kolaylaştırarak elektronik tablo oluşturma süreçlerini otomatikleştirmenizi sağlar.
IronXL, Visual Basic ve C# ile uyumlu mu?
Evet, IronXL hem C# hem de Visual Basic ile kullanılabilir ve bu, farklı programlama dilleriyle çalışan geliştiriciler için esneklik sağlar.
IronXL, veritabanlarıyla nasıl entegre olur?
IronXL, veritabanlarıyla kolay entegrasyon sağlar, bu da Excel dosyaları ve veritabanı sistemleri arasında veri içe ve dışa aktarmanıza minimum çaba ile olanak tanır.
IronXL kullanımına dair bir eğitim materyali nerede bulabilirim?
Iron Software web sitesinde, IronXL for .NET uygulamalarını kullanmayla ilgili geniş kapsamlı bir eğitim bulabilirsiniz; burada temel Excel dosyası oluşturma ve işleme adım adım gösterilmektedir.




