Altbilgi içeriğine atla
IRONXL KULLANARAK

Blazor'dan Excel'e Aktarma: C#'da IronXL Kullanarak Eksiksiz Kılavuz

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. IronXL da burada 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, excelExport.js adında yeni bir JavaScript dosyası 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);
}
JAVASCRIPT

Bu scripti _Host.cshtml dosyanıza ekleyin:

<script src="~/excelExport.js"></script>
<script src="~/excelExport.js"></script>
HTML

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)
        {
            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
$vbLabelText   $csharpLabel

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 yöntemi, içerik uzunluğuna bakılmaksızın sütunların doğru 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 = "";
            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, 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ı, JavaScript'e ikili verilerin verimli bir şekilde akışına olanak tanır.

Çıktı

Kodumuzu çalıştırdığımızda, sayfamızda ihraç etme işlemini yürütecek butonu göreceğiz.

Blazor Excel'e Aktarma: IronXL Kullanarak C# Tam Kılavuz: Görsel 1 - Örnek Blazor sayfası

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

Blazor Excel'e Aktarma: IronXL Kullanarak C# Tam Kılavuz: Görsel 2 - Excel dosyasına aktarılan veriler

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");
            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
$vbLabelText   $csharpLabel

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.

Blazor Excel'e Aktarma: IronXL Kullanarak C# Tam Kılavuz: Görsel 3 - Gelişmiş özellikler örnek çıkışı

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? IronXL'in ücretsiz denemesine bugün başlayın veya üretim dağıtımı için lisanslama seçeneklerimizi keşfedin.

Sıkça Sorulan Sorular

Blazor Sunucu uygulamalarında Excel dosyalarını nasıl aktarabilirim?

Blazor Sunucu uygulamalarında Excel dosyalarını aktarmak için IronXL kullanabilirsiniz. IronXL, Microsoft Office'e ihtiyaç duymadan, doğrudan sunucudan XLSX dosyaları oluşturmanızı, biçimlendirmenizi ve indirmenizi sağlar.

Blazor'da IronXL kullanmak için Microsoft Office kurulu mu olmalı?

Hayır, Blazor uygulamalarında Excel dosyalarını oluşturmak, biçimlendirmek ve aktarmak için sunucuda Microsoft Office'in kurulu olmasına gerek yoktur.

IronXL, Blazor uygulamalarına entegre olabilir mi?

Evet, IronXL, Excel aktarımı özelliklerini kolayca eklemenizi sağlayarak Blazor uygulamalarıyla sorunsuz bir şekilde entegre olur.

Web uygulamalarında Excel dosyası 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 üretme bulunur.

IronXL kullanarak Excel dosyalarını aktarma konusunda kod örnekleri mevcut mu?

Evet, rehber, IronXL kullanarak Blazor Sunucu uygulamanızda Excel aktarma özelliklerini uygulamanıza yardımcı olacak kod örnekleri sağlar.

Blazor'da IronXL kullanarak Excel dosyalarını biçimlendirmek mümkün mü?

Evet, IronXL, Blazor uygulamaları içinde doğrudan Excel dosyalarını biçimlendirmenizi sağlayarak stil ayarlama, formül ekleme ve daha fazlasını yapmanızı sağlar.

IronXL ile hangi tür Excel dosyalarını oluşturabilirim?

IronXL kullanarak, çoğu hesap tablosu uygulamalarıyla uyumlu olan yaygın olarak kullanılan Excel dosya formatı XLSX dosyaları oluşturabilirsiniz.

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