使用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 的主要功能使開發人員能夠創建、編輯、操作和閱讀 Excel 文件,而無需安裝 Microsoft 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 Web 應用程式創建 Excel 文件。

先決條件

要在 Blazor Server 應用程式中匯出 Excel 檔案,需要一些先決條件:

  1. Visual Studio (最新版本)

  2. .NET Framework 6 或 7

  3. 在 Visual Studio 中運行 Blazor Server 應用程式

  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 文件的程式碼

在 Data 資料夾下建立一個名為 "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 庫創建了一個 Excel Workbook 以 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 部分內添加處理導出功能的C#代碼來實現 ExcelGeneration 函數。

添加導航連結

請在 "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 是相對較慢的庫且需要更複雜的編碼。Microsoft Interop 比 IronXL 慢,因為它需要使用 COM 來讀取和寫入數據。探索更多關於 IronXL 相關的文章 如何匯出 Excel 檔案, 控制 Excel 工作簿中儲存格的顯示方式使用 網格線, 圖表管理,以及 文本對齊、字體大小、顏色.

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

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

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