IronXL Kullanarak Blazor Uygulamasında Excel'e Nasıl Aktarılır
Verileri Excel'e ihraç etmek, hemen hemen her web uygulamasının gereksinimi olan bir şeydir, ister raporlar, envanter listeleri veya müşteri fatura oluşturmak olsun. Microsoft Office gerektirmeden bunu Blazor Server uygulamalarında güvenilir bir şekilde gerçekleştirmek zorlu olabilir. İşte burada IronXL devreye giriyor. Sunucunuzdan doğrudan Excel dosyaları oluşturmanıza, biçimlendirmenize ve indirmenize olanak tanır, herhangi bir Office kurulumu gerektirmez, ve Blazor ile kesintisiz entegre olur. Bu kılavuzda, uygulamanıza profesyonel Excel ihraç özellikleri eklemenin ne kadar basit olduğunu göreceksiniz. Haydi başlayalım.
Verileri Excel'e İhraç Etmek İçin IronXL Başlangıç Rehberi
IronXL'i Blazor Server uygulamasına kurmak minimal yapılandırma gerektirir. Visual Studio 2022 veya üstü sürümlerde .NET 6 veya daha üstünü hedefleyen yeni bir Blazor Server projesi oluşturarak başlayın.
NuGet Paket Yöneticisi Konsolu aracılığıyla IronXL'i yükleyin (alternatif yöntemler için tam kurulum kılavuzumuzu inceleyin):
Install-Package IronXL.Excel
Bir JavaScript dosyası indirme yardımcı fonksiyonu oluşturun. Wwwroot klasörünüze yeni bir JavaScript dosyası olan excelExport.js 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 script'i _Host.cshtml dosyanıza dahil edin:
<script src="~/excelExport.js"></script>
<script src="~/excelExport.js"></script>
Bu JavaScript fonksiyonu, tarayıcı tarafındaki indirme mekanizmasını işleterek, Blazor Server uygulamanızın byte akışını indirilebilir bir dosyaya dönüştürür. Fonksiyon, geçici bir blob URL oluşturur, indirmeyi başlatır ve bellek sızıntılarını önlemek için kaynak girdilerini temizler.
Veri Kaynağını IronXL ile Excel Dosyalarına İhraç Etme
İş mantığınıza hizmet etmek için bir Excel ihracat hizmeti oluşturun. Bu hizmet, IronXL işlevselliğini kapsar ve Blazor Excel ihracat uygulamanızda farklı ihracat senaryoları için yeniden kullanılabilir yöntemler sunar:
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)
{
// If the program fails to return file
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)
{
// If the program fails to return file
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
' If the program fails to return file
Throw New InvalidOperationException("Failed to generate sales report", ex)
End Try
End Function
End Class
Bu hizmet, yeni defterler ve çalışma sayfaları oluşturmak, biçimlendirilmiş başlıklar eklemek, veri kaynağınızdan getirilen verilerle satırları doldurmak, formüller uygulamak ve potansiyel hataları ele almak gibi IronXL'in anahtar özelliklerini gösterir. AutoSizeColumn metodu, sütunların içerik uzunluğundan bağımsız olarak düzgün görüntülenmesini sağlar. Daha gelişmiş biçimlendirme seçenekleri için, hücre stil kılavuzumuzu keşfedin.
Blazor'da Dosya İndirme Nasıl Uygulanır?
İhracat hizmetini kullanan ve kullanıcı etkileşimlerini yöneten 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 = "";
// Generate sample data - replace with actual data source
var salesData = GetSalesData();
// Generate Excel file
var fileBytes = ExcelService.GenerateSalesReport(salesData);
// Trigger download using a memory stream to handle the file
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.";
// Log exception details for debugging
}
finally
{
isExporting = false;
}
}
private List<SalesData> GetSalesData()
{
// Return your actual data here
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 }
};
}
}
@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 = "";
// Generate sample data - replace with actual data source
var salesData = GetSalesData();
// Generate Excel file
var fileBytes = ExcelService.GenerateSalesReport(salesData);
// Trigger download using a memory stream to handle the file
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.";
// Log exception details for debugging
}
finally
{
isExporting = false;
}
}
private List<SalesData> GetSalesData()
{
// Return your actual data here
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 }
};
}
}
@page "/excel-export"
@Imports 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 Then
<span>Generating...</span>
Else
<span>Export Sales Report</span>
End If
</button>
@If Not String.IsNullOrEmpty(errorMessage) Then
<div class="alert alert-danger mt-2">@errorMessage</div>
End If
</div>
@code {
Private isExporting As Boolean = False
Private errorMessage As String = ""
Private Async Function ExportSalesReport() As Task
Try
isExporting = True
errorMessage = ""
' Generate sample data - replace with actual data source
Dim salesData = GetSalesData()
' Generate Excel file
Dim fileBytes = ExcelService.GenerateSalesReport(salesData)
' Trigger download using a memory stream to handle the file
Using stream As New MemoryStream(fileBytes)
Using streamRef As New DotNetStreamReference(stream)
Await JS.InvokeVoidAsync("downloadFileFromStream", $"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx", streamRef)
End Using
End Using
Catch ex As Exception
errorMessage = "Export failed. Please try again."
' Log exception details for debugging
Finally
isExporting = False
End Try
End Function
Private Function GetSalesData() As List(Of SalesData)
' Return your actual data here
Return New List(Of SalesData) From {
New SalesData With {.Date = DateTime.Now, .Product = "Widget A", .Quantity = 100, .Revenue = 5000},
New SalesData With {.Date = DateTime.Now.AddDays(-1), .Product = "Widget B", .Quantity = 75, .Revenue = 3750}
}
End Function
}
Bu bileşen, ihracat 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ısı, ikili verilerin JavaScript'e etkin bir şekilde akışını sağlar.
Çıktı
Kodumuzu çalıştırdığımızda, sayfamızda ihraç etme işlemini yürütecek butonu göreceğiz.

Butona tıkladığımızda, veriler yeni bir Excel belgesine kaydedilecek ve ihraç edilen dosya indirilecektir.

IronXL Excel İhracatınıza Hangi Gelişmiş Özellikleri Ekleyebilir?
IronXL, profesyonel görünümlü ihracatlar için gelişmiş Excel özelliklerini destekler. Bir envanter yönetimi senaryosunda, koşullu biçimlendirme ve çoklu çalışma sayfaları 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");
// Add headers
details["A1"].Value = "SKU";
details["B1"].Value = "Name";
details["C1"].Value = "Quantity";
// Apply bold font for headers
var headerRange = details["A1:C1"];
headerRange.Style.Font.Bold = true;
for (int i = 0; i < items.Count; i++)
{
var row = i + 2; // start from row 2
var item = items[i];
details[$"A{row}"].Value = item.SKU;
details[$"B{row}"].Value = item.Name;
details[$"C{row}"].Value = item.Quantity;
// Highlight low stock items
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");
// Add headers
details["A1"].Value = "SKU";
details["B1"].Value = "Name";
details["C1"].Value = "Quantity";
// Apply bold font for headers
var headerRange = details["A1:C1"];
headerRange.Style.Font.Bold = true;
for (int i = 0; i < items.Count; i++)
{
var row = i + 2; // start from row 2
var item = items[i];
details[$"A{row}"].Value = item.SKU;
details[$"B{row}"].Value = item.Name;
details[$"C{row}"].Value = item.Quantity;
// Highlight low stock items
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")
' Add headers
details("A1").Value = "SKU"
details("B1").Value = "Name"
details("C1").Value = "Quantity"
' Apply bold font for headers
Dim headerRange = details("A1:C1")
headerRange.Style.Font.Bold = True
For i As Integer = 0 To items.Count - 1
Dim row = i + 2 ' start from row 2
Dim item = items(i)
details($"A{row}").Value = item.SKU
details($"B{row}").Value = item.Name
details($"C{row}").Value = item.Quantity
' Highlight low stock items
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ı zahmetsizce yönetir, işletme kurallarına göre koşullu biçimlendirme uygular ve gerektiğinde pivot tablolar ve grafikler gibi gelişmiş Excel özelliklerini destekler. Detaylı API dokümantasyonu için kapsamlı referans kılavuzumuza göz atın.

Sonuç
IronXL, Excel dosya oluşturmayı Blazor Server uygulamalarında karmaşık bir zorluktan basit bir göreve dönüştürür. Sezgisel API'si, Microsoft Office kurulumuna ihtiyaç duymadan gelişmiş Excel özelliklerine erişim sağlar. Basit veri ihracatlarından, formüller ve biçimlendirme ile karmaşık çok sayfalı raporlara kadar IronXL hepsini mükemmel performans ve güvenilirlikle ele alır.
Blazor uygulamalarınızı profesyonel Excel ihraç yetenekleriyle geliştirmeye hazır mısınız? Üretim dağıtımı için ücretsiz denemenizi başlatın.
Sıkça Sorulan Sorular
Blazor Sunucu uygulaması içinde Excel dosyalarını nasıl dışa aktarabilirim?
Bir Blazor Sunucu uygulamasında Excel dosyalarını dışa aktarmak için IronXL kullanabilirsiniz. IronXL, Microsoft Office'e ihtiyaç duymadan doğrudan sunucunuzdan Excel dosyaları oluşturmanıza, biçimlendirmenize ve indirmenize olanak tanır.
Blazor'da Excel dosyalarıyla çalışmak için Microsoft Office gerekli mi?
Hayır, IronXL, Excel dosyalarıyla çalışmak için Microsoft Office gerektirmeden çalışabilmenizi sağlar. Blazor uygulamanız içinde Excel dosyaları oluşturma ve manipüle etme işlevselliği sunar.
IronXL, Blazor uygulamalarında Excel aktarımı için ne gibi faydalar sağlar?
IronXL, Blazor ile sorunsuz entegrasyon sağlar, Excel dosyalarını kolayca oluşturmanıza, biçimlendirmenize ve dışa aktarmanıza izin verir. Süreci basitleştirir, Microsoft Office ihtiyacını ortadan kaldırır ve çeşitli Excel formatlarını destekler.
IronXL diğer Blazor bileşenleri ile entegre edilebilir mi?
Evet, IronXL, Blazor bileşenleri ile sorunsuz entegre olur, uygulamalarınıza kolayca Excel dışa aktarma işlevselliği eklemenize olanak tanır.
Blazor'da IronXL kullanarak Excel dosyalarını biçimlendirmek mümkün mü?
Evet, IronXL, Excel dosyalarını biçimlendirmek için kapsamlı özellikler sunar, hücreleri stilize etme, sütun genişliklerini ayarlama ve karmaşık formüller oluşturma gibi, tüm bunlar Blazor Sunucu uygulamanız içinde.
Blazor'da Excel'e veri dışa aktarırken büyük veri kümelerini nasıl ele alıyorsunuz?
IronXL, büyük veri kümelerini verimli bir şekilde ele almak için tasarlanmıştır, Blazor Sunucu ortamında geniş verileri Excel dosyalarına dışa aktarırken sorunsuz performans sağlar.
IronXL hangi Excel dosya formatlarını destekliyor?
IronXL, XLS, XLSX ve CSV dahil olmak üzere çeşitli Excel dosya formatlarını destekler, bu da Blazor uygulamalarınızda Excel verilerini nasıl dışa aktaracağınız ve çalışacağınız konusunda esneklik sağlar.
IronXL, Blazor'da raporlar oluşturmak için kullanılabilir mi?
Kesinlikle, IronXL, Blazor uygulamalarında detaylı raporlar oluşturmak için idealdir. Profesyonel Excel raporlarına veri derleme, biçimlendirme ve dışa aktarma için güçlü özellikler sunar.
IronXL, Excel dosyalarını dışa aktarırken veri bütünlüğünü nasıl sağlar?
IronXL, dışa aktarma sürecinde verinizin yapısını ve biçimlendirmesini doğru bir şekilde koruyarak veri bütünlüğünü sağlar, bu da Blazor uygulamaları için güvenilir bir çözüm haline gelir.
IronXL kullanarak Blazor Sunucu uygulamasında Excel dosya oluşturmayı otomatikleştirmek mümkün mü?
Evet, IronXL, Blazor Sunucu uygulamalarında Excel dosyalarının oluşturulması ve dışa aktarılmasını otomatikleştirmek için kullanılabilir, iş akışlarını daha akıcı hale getirir ve verimliliği artırır.




