使用IRONXL

如何使用IronXL將數據匯出至Blazor中的Excel

已更新 2024年1月29日
分享:

本教程將說明如何在 Blazor Web 應用程式中使用 IronXL 庫以具有吸引力的呈現方式匯出數據至 Excel 文件,並生成和下載 Excel 文件中的數據。

IronXL:C# Excel 函式庫

IronXL是一個 C# Excel 庫,專為處理 Excel 中最耗時且重複多次的任務而設計。 IronXL 強大到足以處理 Excel 中最複雜的問題。 它能輕鬆處理龐大的數據集和大型單元格,這對於許多使用 Excel 工作的開發人員來說一直是一項困難的任務。 此程式庫幫助他們開發應用程式,能夠讀取並直接寫入 Excel 數據,無需在 Windows 上與 Microsoft Office 文件或庫介面互動。

IronXL 函式庫可以用於建立各種類型的試算表,例如發票、支出報告或銷售報告。 此外,它可以通过自动化合并复杂数据集等任务,帮助简化您工作场所中的数据分析或报告流程。 IronXL支持多種文件格式.

IronXL 的主要功能使開發人員能夠在不需要 Microsoft Excel 的情況下創建、編輯、操作和讀取 Excel 文件。 這意味著您不需要在系統上安裝 Microsoft Excel。 此功能為開發者提供各種可能性,簡化應用程式中 Excel 資料的整合。 例如,開發者可以自動從資料庫生成報告並將其匯出到 Excel,以便輕鬆分發。 如需有關在 C# 中讀取 Excel 文件的詳細指南,請參閱此內容。C# 讀取 Excel 文件教程。

using IronXL;

class Program
{
    static void Main()
    {
        License.LicenseKey = "License-Key;

        // Load an existing Excel file
        WorkBook workbook = WorkBook.Load("ExistingData.xlsx");
        WorkSheet sheet = workbook.DefaultWorkSheet;

        // For example, changing the sales value in cell C2
        if (sheet["C2"].IsEmpty == false)
        {
            double currentSales = sheet["C2"].DoubleValue;
            // Increase sales by 10%
            sheet["C2"].Value = currentSales * 1.10;
        }

        // Save the changes back to the same file or a new file
        workbook.SaveAs("UpdatedData.xlsx");
    }
}
using IronXL;

class Program
{
    static void Main()
    {
        License.LicenseKey = "License-Key;

        // Load an existing Excel file
        WorkBook workbook = WorkBook.Load("ExistingData.xlsx");
        WorkSheet sheet = workbook.DefaultWorkSheet;

        // For example, changing the sales value in cell C2
        if (sheet["C2"].IsEmpty == false)
        {
            double currentSales = sheet["C2"].DoubleValue;
            // Increase sales by 10%
            sheet["C2"].Value = currentSales * 1.10;
        }

        // Save the changes back to the same file or a new file
        workbook.SaveAs("UpdatedData.xlsx");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

從 Blazor 專案導出數據到 Excel

讓我們按照步驟從 Blazor 網頁應用程式創建一個 Excel 文件。

先決條件

在 Blazor 伺服器應用程式中匯出 Excel 檔案,有一些先決條件:

  1. Visual Studio(最新版本)

  2. .NET Framework 6 或 7

  3. 在 Visual Studio 中運行 Blazor 伺服器應用程式

  4. 穩定的網際網路連線以安裝IronXL庫

安裝 IronXL 程式庫

現在,是時候使用 NuGet 套件管理器主控台安裝 IronXL 程式庫了。 在 NuGet 套件管理器控制台中打開並寫下以下命令:

Install-Package IronXL.Excel

此命令將在應用程式中安裝最新版的IronXL。

下載匯出的 Excel 檔案代碼

安裝 IronXL 後,從解決方案總管中在 "wwwroot" 區段下創建一個名為 "js" 的資料夾。 在「js」資料夾中,建立一個名為「SaveAsFile.js」的 JavaScript 檔案,如下圖所示。

如何使用 IronXL 在 Blazor 中導出數據到 Excel,圖 1:js 文件夾

js 資料夾

現在,將以下程式碼添加到 "SaveAsFile.js" 檔案中。此函式會將生成的檔案以流的方式返回給使用者。

function saveAsFile(filename, byteBase64) {
    var link = document.createElement('a');
    link.download = filename;
    link.href = "data:application/octet-stream;base64," + byteBase64;
    document.body.appendChild(link); // Needed for Firefox link
    link.click();
    document.body.removeChild(link);
}
JAVASCRIPT

接下來,將相對路徑添加到 "_Host.cshtml" 文件中的 "SaveAsFile.js" 文件中。這將允許應用程序調用之前定義的 JavaScript 函數。

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

匯出 Excel 檔案的程式碼

在資料夾下創建一個名為 "ExcelExport.cs" 的類。

如何使用IronXL在Blazor中匯出數據到Excel文件,圖2:ExcelExport.cs

ExcelExport.cs

在 "ExcelExport.cs" 文件中編寫以下程式碼以匯出數據。

using IronXL;
using Microsoft.JSInterop;
using System;

namespace Export_Excel_Blazor.Data
{
    public class ExcelExport
    {
        public void ExcelGenerate(IJSRuntime iJSRuntime)
        {
            byte [] fileContents;
            WorkBook xlsxWorkbook = WorkBook.Create(IronXL.ExcelFileFormat.XLSX);
            xlsxWorkbook.Metadata.Author = "IronXL";

            //Add a blank WorkSheet
            WorkSheet xlsxSheet = xlsxWorkbook.CreateWorkSheet("new_sheet");

            //Add data and styles to the new worksheet

            xlsxSheet ["A1"].Value = "Product EN";
            xlsxSheet ["B1"].Value = "SKU";
            xlsxSheet ["C1"].Value = "Customer";

            xlsxSheet ["A1:C1"].Style.Font.Bold = true;

            xlsxSheet ["A2"].Value = "Iron Rods";
            xlsxSheet ["A3"].Value = "Mobile Phones";
            xlsxSheet ["A4"].Value = "Chargers";

            xlsxSheet ["B2"].Value = "105";
            xlsxSheet ["B3"].Value = "285";
            xlsxSheet ["B4"].Value = "301";

            xlsxSheet ["C2"].Value = "Adam";
            xlsxSheet ["C3"].Value = "Ellen";
            xlsxSheet ["C4"].Value = "Tom";

            fileContents = xlsxWorkbook.ToByteArray();

            iJSRuntime.InvokeAsync<ExcelExport>(
                "saveAsFile",
                "GeneratedExcel.xlsx",
                Convert.ToBase64String(fileContents)
            );
        }
    }
}
using IronXL;
using Microsoft.JSInterop;
using System;

namespace Export_Excel_Blazor.Data
{
    public class ExcelExport
    {
        public void ExcelGenerate(IJSRuntime iJSRuntime)
        {
            byte [] fileContents;
            WorkBook xlsxWorkbook = WorkBook.Create(IronXL.ExcelFileFormat.XLSX);
            xlsxWorkbook.Metadata.Author = "IronXL";

            //Add a blank WorkSheet
            WorkSheet xlsxSheet = xlsxWorkbook.CreateWorkSheet("new_sheet");

            //Add data and styles to the new worksheet

            xlsxSheet ["A1"].Value = "Product EN";
            xlsxSheet ["B1"].Value = "SKU";
            xlsxSheet ["C1"].Value = "Customer";

            xlsxSheet ["A1:C1"].Style.Font.Bold = true;

            xlsxSheet ["A2"].Value = "Iron Rods";
            xlsxSheet ["A3"].Value = "Mobile Phones";
            xlsxSheet ["A4"].Value = "Chargers";

            xlsxSheet ["B2"].Value = "105";
            xlsxSheet ["B3"].Value = "285";
            xlsxSheet ["B4"].Value = "301";

            xlsxSheet ["C2"].Value = "Adam";
            xlsxSheet ["C3"].Value = "Ellen";
            xlsxSheet ["C4"].Value = "Tom";

            fileContents = xlsxWorkbook.ToByteArray();

            iJSRuntime.InvokeAsync<ExcelExport>(
                "saveAsFile",
                "GeneratedExcel.xlsx",
                Convert.ToBase64String(fileContents)
            );
        }
    }
}
Imports IronXL
Imports Microsoft.JSInterop
Imports System

Namespace Export_Excel_Blazor.Data
	Public Class ExcelExport
		Public Sub ExcelGenerate(ByVal iJSRuntime As IJSRuntime)
			Dim fileContents() As Byte
			Dim xlsxWorkbook As WorkBook = WorkBook.Create(IronXL.ExcelFileFormat.XLSX)
			xlsxWorkbook.Metadata.Author = "IronXL"

			'Add a blank WorkSheet
			Dim xlsxSheet As WorkSheet = xlsxWorkbook.CreateWorkSheet("new_sheet")

			'Add data and styles to the new worksheet

			xlsxSheet ("A1").Value = "Product EN"
			xlsxSheet ("B1").Value = "SKU"
			xlsxSheet ("C1").Value = "Customer"

			xlsxSheet ("A1:C1").Style.Font.Bold = True

			xlsxSheet ("A2").Value = "Iron Rods"
			xlsxSheet ("A3").Value = "Mobile Phones"
			xlsxSheet ("A4").Value = "Chargers"

			xlsxSheet ("B2").Value = "105"
			xlsxSheet ("B3").Value = "285"
			xlsxSheet ("B4").Value = "301"

			xlsxSheet ("C2").Value = "Adam"
			xlsxSheet ("C3").Value = "Ellen"
			xlsxSheet ("C4").Value = "Tom"

			fileContents = xlsxWorkbook.ToByteArray()

			iJSRuntime.InvokeAsync(Of ExcelExport)("saveAsFile", "GeneratedExcel.xlsx", Convert.ToBase64String(fileContents))
		End Sub
	End Class
End Namespace
VB   C#

在上述範例中,IronXL 庫創建了一個 ExcelWorkbook以 XLSX 格式。 IronXL 也支援 XLS 格式。 WorkBook 是必需的,以擁有一個工作表添加。 下一步是用虛擬數據填充這個表格。

之後,整個 WorkBook 內容被轉換為位元組陣列,並透過 IJSRuntime 觸發下載檔案,具體參數如下:JavaScript 函數的名稱、匯出檔案的檔名和 WorkBook 的位元組陣列。

創建 Razor 組件

在 Pages 資料夾下建立一個名為 "ExportExcel.razor" 的 Razor 元件。

如何使用IronXL在Blazor中將數據導出到Excel,圖3:

ExcelExport.cs

接下來,將 "ExportExcel.razor" 的原始碼替換為以下提供的代碼。

@page "/export"
@using Export_Excel_Blazor.Data
@inject IJSRuntime JS

<h1>IronXL Export Excel File</h1>

<p>Intuitive C# & VB.NET Excel API & No need to install MS Office or Excel Interop</p>

<button class="btn btn-primary" @onclick="ExcelGeneration">Create Excel File</button>

@code {

    private void ExcelGeneration()
    {
        ExcelExport excelExport = new ExcelExport();
        excelExport.ExcelGenerate(JS);
    }
}
@page "/export"
@using Export_Excel_Blazor.Data
@inject IJSRuntime JS

<h1>IronXL Export Excel File</h1>

<p>Intuitive C# & VB.NET Excel API & No need to install MS Office or Excel Interop</p>

<button class="btn btn-primary" @onclick="ExcelGeneration">Create Excel File</button>

@code {

    private void ExcelGeneration()
    {
        ExcelExport excelExport = new ExcelExport();
        excelExport.ExcelGenerate(JS);
    }
}
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: @page "/export" using Export_Excel_Blazor.Data inject IJSRuntime JS <h1> IronXL Export Excel File</h1> <p> Intuitive C# & VB.NET Excel API & No need to install MS Office or Excel Interop</p> <button class="btn btn-primary" onclick="ExcelGeneration"> Create Excel File</button> @code
"btn btn-primary" onclick="ExcelGeneration"> Create Excel File</button> code
Private Friend page "/export" [using] Export_Excel_Blazor.Data inject IJSRuntime JS (Of h1) IronXL Export Excel File</h1> (Of p) Intuitive C# & VB.NET Excel API And No need [to] install MS Office [or] Excel Interop</p> <button Class="btn btn-primary" onclick

	Private Sub ExcelGeneration()
		Dim excelExport As New ExcelExport()
		excelExport.ExcelGenerate(JS)
	End Sub
End Class
VB   C#

在上述 HTML 代碼中,創建一個按鈕,並將 onclick 屬性指向 ExcelGeneration 函數。 然後,在 @code 區塊中新增 ExcelGeneration 函式,使用 C# 程式碼來處理匯出功能。

新增導覽鏈接

將以下代碼片段添加到 "NavMenu.razor" 文件中。它將添加一個導航欄菜單以到達 Excel 生成頁面。

<li class="nav-item px-3">
    <NavLink class="nav-link" href="export">
        <span class="oi oi-list-rich" aria-hidden="true"></span> Export Excel
    </NavLink>
</li>
<li class="nav-item px-3">
    <NavLink class="nav-link" href="export">
        <span class="oi oi-list-rich" aria-hidden="true"></span> Export Excel
    </NavLink>
</li>
HTML

運行專案

最後,運行專案。 您將在瀏覽器中看到以下輸出。 前往「匯出 Excel」導航選單,然後點擊「建立 Excel 文件」按鈕。

如何在 Blazor 中使用 IronXL 將數據導出到 Excel,第 4 圖:ExportExcel.razor

ExportExcel.razor

該應用程式將資料匯出到 Excel 試算表,並將 XLSX 文件下載到您的機器。

如何在 Blazor 中使用 IronXL 導出數據到 Excel,圖 5:下載 Excel

下載 Excel

生成的 Excel 試算表

這是生成的 Excel 文件的預覽。

如何在Blazor中使用IronXL導出數據到Excel,圖6: 生成的Excel

生成的 Excel

摘要

本文介紹了在 Blazor 應用程式中使用 IronXL 生成和匯出 Excel 檔案的過程。 IronXL 是一款對於需要在軟體中操作 Excel 檔案而不需在機器上安裝 Microsoft Office 的 .NET 開發人員來說非常棒的工具。IronXL 提供了一種在 .NET 中建立 Excel 檔案的更快速方式。

IronXL 建立在 C# 語言之上,為全球最受歡迎的試算表應用程式提供快速且簡便的代碼開發,以構建互動且高響應的使用者介面。 Microsoft Interop 是一個相對較慢的庫,且需要更複雜的程式編碼。 由於需要使用 COM 來讀寫資料,Microsoft Interop 比 IronXL 慢。 瀏覽更多有關IronXL的文章如何匯出 Excel 檔案, 控制 Excel 工作簿中儲存格的顯示方式使用網格線, 圖表管理,以及文本對齊、字體大小、顏色.

< 上一頁
C# CSV 解析程式 (逐步) 教程
下一個 >
如何在Razor Pages上生成Excel文件

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 1,136,001 查看許可證 >