Blazor'dan Excel'e Aktarma: C#'da IronXL Kullanarak Eksiksiz Kılavuz
İster raporlar oluşturmak, envanter listeleri veya müşteri faturaları oluşturmak olsun, neredeyse her web uygulaması verileri Excel'e dışa aktarmaya ihtiyaç duyar. Blazor Server uygulamasında, bunu Microsoft Office gerektirmeden güvenilir bir şekilde gerçekleştirmek zorlayıcı olabilir. İşte burada IronXL devreye girer. Sunucunuzdan doğrudan Excel dosyaları oluşturmanıza, biçimlendirmenize ve indirmenize olanak tanır, Office kurulumu gerektirmez ve Blazor ile kesintisiz bir şekilde entegre olur. Bu rehberde, uygulamanıza profesyonel bir Excel dışa aktarma özelliği eklemenin ne kadar basit olduğunu göreceksiniz. Haydi başlayalım.
Verileri Excel'e Dışa Aktarmak için IronXL ile Başlarken
Blazor Server uygulamasında IronXL ayarlamak en az yapılandırmayı gerektirir. Visual Studio 2022 veya üstünde, .NET 6 veya üzerini hedefleyen yeni bir Blazor Server projesi oluşturarak başlayın.
NuGet Package Manager Console üzerinden IronXL'yi kurun (alternatif yöntemler için tam kurulum kılavuzumuza bakın):
Install-Package IronXL
Install-Package IronXL
Sonra, dosya indirme için bir JavaScript yardımcı fonksiyonu oluşturun. wwwroot klasorunuze, excelExport.js adli yeni bir JavaScript dosyasi ekleyin:
window.downloadFileFromStream = async (fileName, contentStreamReference) => {
const arrayBuffer = await contentStreamReference.arrayBuffer();
const blob = new Blob([arrayBuffer]);
const url = URL.createObjectURL(blob);
const anchorElement = document.createElement('a');
anchorElement.href = url;
anchorElement.download = fileName ?? 'export.xlsx';
anchorElement.click();
anchorElement.remove();
URL.revokeObjectURL(url);
}
window.downloadFileFromStream = async (fileName, contentStreamReference) => {
const arrayBuffer = await contentStreamReference.arrayBuffer();
const blob = new Blob([arrayBuffer]);
const url = URL.createObjectURL(blob);
const anchorElement = document.createElement('a');
anchorElement.href = url;
anchorElement.download = fileName ?? 'export.xlsx';
anchorElement.click();
anchorElement.remove();
URL.revokeObjectURL(url);
}
Bu scripti _Host.cshtml dosyaniza dahil edin:
<script src="~/excelExport.js"></script>
<script src="~/excelExport.js"></script>
Bu JavaScript fonksiyonu, Blazor Server uygulamanızdan gelen bayt akışını indirilir bir dosyaya dönüştürerek tarayıcı tarafı indirme mekanizmasını ele alır. Fonksiyon geçici bir blok URL'si oluşturur, indirmeyi tetikler ve bellek sızıntılarını önlemek için kaynakları temizler.
IronXL ile Veri Kaynağını Excel Dosyalarına Nasıl Dışa Aktarırsınız?
İş mantığınızı ele almak için bir Excel dışa aktarma servisi oluşturun. Bu servis, IronXL işlevselliğini kapsar ve sizin Blazor Excel ihracat uygulamanızda farklı ihracat senaryoları için yeniden kullanılabilir yöntemler sağlar:
using IronXL;
using System.IO;
using ExportExcel.Models;
public class ExcelExportService
{
public byte[] GenerateSalesReport(List<SalesData> salesData)
{
try
{
var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
workbook.Metadata.Author = "Sales Department";
var worksheet = workbook.CreateWorkSheet("Monthly Sales");
worksheet["A1"].Value = "Date";
worksheet["B1"].Value = "Product";
worksheet["C1"].Value = "Quantity";
worksheet["D1"].Value = "Revenue";
worksheet["E1"].Value = "Profit Margin";
var headerRange = worksheet["A1:E1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";
int row = 2;
foreach (var sale in salesData)
{
worksheet[$"A{row}"].Value = sale.Date.ToString("yyyy-MM-dd");
worksheet[$"B{row}"].Value = sale.Product ?? "Unknown";
worksheet[$"C{row}"].Value = sale.Quantity;
worksheet[$"D{row}"].Value = sale.Revenue;
worksheet[$"E{row}"].Value = $"=D{row}*0.15";
row++;
}
worksheet.AutoSizeColumn(0, true);
using var ms = workbook.ToStream();
return ms.ToArray();
}
catch (Exception ex)
{
throw new InvalidOperationException("Failed to generate sales report", ex);
}
}
}
using IronXL;
using System.IO;
using ExportExcel.Models;
public class ExcelExportService
{
public byte[] GenerateSalesReport(List<SalesData> salesData)
{
try
{
var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
workbook.Metadata.Author = "Sales Department";
var worksheet = workbook.CreateWorkSheet("Monthly Sales");
worksheet["A1"].Value = "Date";
worksheet["B1"].Value = "Product";
worksheet["C1"].Value = "Quantity";
worksheet["D1"].Value = "Revenue";
worksheet["E1"].Value = "Profit Margin";
var headerRange = worksheet["A1:E1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";
int row = 2;
foreach (var sale in salesData)
{
worksheet[$"A{row}"].Value = sale.Date.ToString("yyyy-MM-dd");
worksheet[$"B{row}"].Value = sale.Product ?? "Unknown";
worksheet[$"C{row}"].Value = sale.Quantity;
worksheet[$"D{row}"].Value = sale.Revenue;
worksheet[$"E{row}"].Value = $"=D{row}*0.15";
row++;
}
worksheet.AutoSizeColumn(0, true);
using var ms = workbook.ToStream();
return ms.ToArray();
}
catch (Exception ex)
{
throw new InvalidOperationException("Failed to generate sales report", ex);
}
}
}
Imports IronXL
Imports System.IO
Imports ExportExcel.Models
Public Class ExcelExportService
Public Function GenerateSalesReport(salesData As List(Of SalesData)) As Byte()
Try
Dim workbook = WorkBook.Create(ExcelFileFormat.XLSX)
workbook.Metadata.Author = "Sales Department"
Dim worksheet = workbook.CreateWorkSheet("Monthly Sales")
worksheet("A1").Value = "Date"
worksheet("B1").Value = "Product"
worksheet("C1").Value = "Quantity"
worksheet("D1").Value = "Revenue"
worksheet("E1").Value = "Profit Margin"
Dim headerRange = worksheet("A1:E1")
headerRange.Style.Font.Bold = True
headerRange.Style.BackgroundColor = "#4472C4"
headerRange.Style.Font.Color = "#FFFFFF"
Dim row As Integer = 2
For Each sale In salesData
worksheet($"A{row}").Value = sale.Date.ToString("yyyy-MM-dd")
worksheet($"B{row}").Value = If(sale.Product, "Unknown")
worksheet($"C{row}").Value = sale.Quantity
worksheet($"D{row}").Value = sale.Revenue
worksheet($"E{row}").Value = $"=D{row}*0.15"
row += 1
Next
worksheet.AutoSizeColumn(0, True)
Using ms = workbook.ToStream()
Return ms.ToArray()
End Using
Catch ex As Exception
Throw New InvalidOperationException("Failed to generate sales report", ex)
End Try
End Function
End Class
Bu servis, yeni çalışma kitapları ve çalışma sayfaları oluşturmayı, biçimlendirilmiş başlıklar eklemeyi, veri kaynağınızdan içe aktarılan verilerle veri satırlarını doldurmayı, formüller uygulamayı ve potansiyel hataları ele almayı da içeren önemli IronXL özelliklerini göstermektedir. AutoSizeColumn methodu, icerigin uzunluguna bakilmaksizin sutunlarin dogru gösterilmesini saglar. Daha gelişmiş biçimlendirme seçenekleri için, hücre stil rehberimize göz atın.
Dosya İndirmesini Blazor'da Nasıl Uygularsınız?
Dışa aktarma servisini kullanan ve kullanıcı etkileşimini ele alan bir Razor bileşeni oluşturun:
@page "/excel-export"
@using ExportExcel.Models
@inject ExcelExportService ExcelService
@inject IJSRuntime JS
<h3>Excel Export Dashboard</h3>
<div class="export-section">
<button class="btn btn-primary" @onclick="ExportSalesReport" disabled="@isExporting">
@if (isExporting)
{
<span>Generating...</span>
}
else
{
<span>Export Sales Report</span>
}
</button>
@if (!string.IsNullOrEmpty(errorMessage))
{
<div class="alert alert-danger mt-2">@errorMessage</div>
}
</div>
@code {
private bool isExporting = false;
private string errorMessage = "";
private async Task ExportSalesReport()
{
try
{
isExporting = true;
errorMessage = "";
var salesData = GetSalesData();
var fileBytes = ExcelService.GenerateSalesReport(salesData);
using var stream = new MemoryStream(fileBytes);
using var streamRef = new DotNetStreamReference(stream);
await JS.InvokeVoidAsync("downloadFileFromStream",
$"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx", streamRef);
}
catch (Exception ex)
{
errorMessage = "Export failed. Please try again.";
}
finally
{
isExporting = false;
}
}
private List<SalesData> GetSalesData()
{
return new List<SalesData>
{
new() { Date = DateTime.Now, Product = "Widget A",
Quantity = 100, Revenue = 5000 },
new() { Date = DateTime.Now.AddDays(-1), Product = "Widget B",
Quantity = 75, Revenue = 3750 }
};
}
}
Bu bileşen, dışa aktarma sırasında kullanıcı geri bildirimlerini sağlar, hataları nazikçe ele alır ve zaman damgalı dosya adları oluşturur. DotNetStreamReference sarmalayıcı, JavaScript'e ikili verilerin verimli akışını sağlar.
Çıktı
Kodumuzu çalıştırdığımızda, dışa aktarma işlemini ele almak için kullanılacak düğme ile sayfamızın yüklendiğini göreceğiz.

Düğmeye tıkladığımızda, veriler yeni bir Excel belgesinde kaydedilecek ve dışa aktarılan dosya indirilecektir.

IronXL'nin Excel Dışa Aktarma için Ekleyebileceği Gelişmiş Özellikler Nelerdir?
IronXL, profesyonel görünümlü dışa aktarmalar için sofistike Excel özelliklerini destekler. Bir envanter yönetim senaryosu için, koşullu biçimlendirme ve birden fazla çalışma sayfası ekleyebilirsiniz:
using IronXL;
using ExportExcel.Models;
using System.IO;
namespace ExportExcel.Services
{
public class InventoryExportService
{
public byte[] GenerateInventoryReport(List<InventoryItem> items)
{
var workbook = WorkBook.Create();
var details = workbook.CreateWorkSheet("Inventory Details");
details["A1"].Value = "SKU";
details["B1"].Value = "Name";
details["C1"].Value = "Quantity";
var headerRange = details["A1:C1"];
headerRange.Style.Font.Bold = true;
for (int i = 0; i < items.Count; i++)
{
var row = i + 2;
var item = items[i];
details[$"A{row}"].Value = item.SKU;
details[$"B{row}"].Value = item.Name;
details[$"C{row}"].Value = item.Quantity;
if (item.Quantity < item.ReorderLevel)
{
details[$"C{row}"].Style.BackgroundColor = "#FFB6B6";
}
}
using var stream = workbook.ToStream();
return stream.ToArray();
}
}
}
using IronXL;
using ExportExcel.Models;
using System.IO;
namespace ExportExcel.Services
{
public class InventoryExportService
{
public byte[] GenerateInventoryReport(List<InventoryItem> items)
{
var workbook = WorkBook.Create();
var details = workbook.CreateWorkSheet("Inventory Details");
details["A1"].Value = "SKU";
details["B1"].Value = "Name";
details["C1"].Value = "Quantity";
var headerRange = details["A1:C1"];
headerRange.Style.Font.Bold = true;
for (int i = 0; i < items.Count; i++)
{
var row = i + 2;
var item = items[i];
details[$"A{row}"].Value = item.SKU;
details[$"B{row}"].Value = item.Name;
details[$"C{row}"].Value = item.Quantity;
if (item.Quantity < item.ReorderLevel)
{
details[$"C{row}"].Style.BackgroundColor = "#FFB6B6";
}
}
using var stream = workbook.ToStream();
return stream.ToArray();
}
}
}
Imports IronXL
Imports ExportExcel.Models
Imports System.IO
Namespace ExportExcel.Services
Public Class InventoryExportService
Public Function GenerateInventoryReport(items As List(Of InventoryItem)) As Byte()
Dim workbook = WorkBook.Create()
Dim details = workbook.CreateWorkSheet("Inventory Details")
details("A1").Value = "SKU"
details("B1").Value = "Name"
details("C1").Value = "Quantity"
Dim headerRange = details("A1:C1")
headerRange.Style.Font.Bold = True
For i As Integer = 0 To items.Count - 1
Dim row = i + 2
Dim item = items(i)
details($"A{row}").Value = item.SKU
details($"B{row}").Value = item.Name
details($"C{row}").Value = item.Quantity
If item.Quantity < item.ReorderLevel Then
details($"C{row}").Style.BackgroundColor = "#FFB6B6"
End If
Next
Using stream = workbook.ToStream()
Return stream.ToArray()
End Using
End Function
End Class
End Namespace
IronXL, birden fazla çalışma sayfasını zorlanmadan ele alır, iş kurallarına dayanarak koşullu biçimlendirme uygular ve gerektiğinde pivot tablolar ve grafikler gibi gelişmiş Excel özelliklerini destekler. Detaylı API belgeleri için, kapsamlı referans kılavuzumuza göz atın.

Sonuç
IronXL, Blazor Server uygulamalarında Excel dosya oluşturmayı karmaşık bir zorluktan basit bir göreve dönüştürür. Kullanıcı dostu API'si, Microsoft Office yüklemelerine ihtiyaç duymadan gelişmiş Excel özelliklerine erişim sağlar. Basit veri dışa aktarmalardan formüller ve biçimlendirme içeren karmaşık çok sayfalı raporlara kadar, IronXL hepsini mükemmel performans ve güvenilirlikle yönetir.
Blazor uygulamalarınızı profesyonel Excel dışa aktarma özellikleriyle geliştirmeye hazır mısınız? Bugün IronXL'nin ücretsiz deneme sürümüne başlayın ya da üretim dağıtımı için lisans seçeneklerimizi keşfedin.
Sıkça Sorulan Sorular
Blazor Server uygulamalarında Excel dosyalarını nasıl dışa aktarabilirim?
IronXL'ü kullanarak, Excel dosyalarını Blazor Server uygulamalarında dışa aktarabilir, XLSX dosyalarını sunucudan doğrudan oluşturabilir, biçimlendirebilir ve indirebilirsiniz.
IronXL'ü Blazor'da kullanmak için Microsoft Office yüklemem gerekiyor mu?
Hayır, IronXL, Blazor uygulamalarında Excel dosyalarını oluşturmak, biçimlendirmek ve dışa aktarmak için sunucunuza Microsoft Office kurulumu gerektirmez.
IronXL, Blazor uygulamalarıyla entegre olabilir mi?
Evet, IronXL, Blazor uygulamalarıyla sorunsuz bir şekilde entegre olur ve Excel dışa aktarma özelliklerini kolayca eklemenize izin verir.
Web uygulamalarında Excel dosyalarını dışa aktarmanın yaygın kullanımları nelerdir?
Yaygın kullanımlar arasında raporlar oluşturma, envanter listeleri oluşturma ve müşteri faturalarını Excel formatında hazırlama bulunur.
IronXL kullanarak Excel dosyalarını dışa aktarmak için kod örnekleri mevcut mu?
Evet, kılavuz, IronXL ile Blazor Server uygulamanızda Excel dışa aktarma özelliklerini uygulamanız için kod örnekleri sağlar.
Blazor'da IronXL kullanarak Excel dosyalarını biçimlendirmek mümkün mü?
Evet, IronXL, stil ayarlama, formül ekleme ve daha fazlasını içeren Excel dosyalarını biçimlendirmenize izin verir ve Blazor uygulamalarının içinde doğrudan kullanılabilir.
IronXL ile hangi türde Excel dosyaları oluşturabilirim?
IronXL kullanarak XLSX dosyaları oluşturabilir, bu da çoğu elektronik tablo uygulamasıyla uyumlu yaygın bir Excel dosya formatıdır.




