跳至頁尾內容
USING IRONXL

如何在 Blazor 中導出到 CSV

今天,我們要深入了解如何使用Blazor和IronXL將Excel檔案轉換為CSV格式。 在本教程的最後,您將能夠建立一個基本的Blazor應用程式,以不同格式匯出Excel資料,包括CSV。

IronXL簡介

IronXL是一個強大的.NET Excel程式庫,設計用來處理各種格式的Excel檔案,包括XLS, XLSX, XLSM, XLTX和CSV。它允許開發者以程式化方式讀取、寫入和操控Excel資料,而無需使用Microsoft Office或Excel Interop。

使用IronXL,您可以建立、載入和儲存Excel工作簿,以及讀取和寫入個別儲存格或範圍的資料。 它還支持進階功能,如格式化公式圖表和樞紐分析表。 IronXL相容各種.NET Framework,並可與C#和VB.NET等流行語言一起使用。

將Excel檔案轉換為CSV的步驟

設定您的Blazor專案

首先,您需要建立一個新的Blazor Server專案。 打開Visual Studio,建立一個新專案並選擇"Blazor Server App"範本。 命名您的專案,然後點擊"建立"。

建立專案後,打開Pages資料夾並找到Index.razor檔案。這是新增和編寫Blazor元件以處理文件上傳和轉換的地方。

安裝IronXL

在開始撰寫程式碼之前,必須安裝IronXL程式庫。 在Visual Studio中打開套件管理器主控台,並執行以下命令:

Install-Package IronXL.Excel

此命令將在您的Blazor專案中安裝IronXL程式庫。 現在您可以開始撰寫程式碼了!

建立文件上傳元件

首先,建立一個基本的文件上傳元件,允許使用者上傳現有的Excel檔案。接著,從InputFile元件。 將以下程式碼新增到您的Index.razor檔案中,位於"@page "行下方:

@using Microsoft.AspNetCore.Components.Forms
@using IronXL
@using System.IO
@using System.Threading.Tasks

<div class="container">
    <h3>File Upload</h3>

    <InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" />
    <h3>Selected File: @originalFileName</h3>
    <h3 style="color:bisque">Is File converted: <span>@message</span></h3>
</div>

此程式碼設置文件上傳元件,包含按鈕和資訊區域,以顯示文件轉換的狀態。 accept屬性指定接受的文件格式。

編寫文件轉換程式碼

現在,讓我們撰寫處理文件上傳和轉換的程式碼。 將結合使用IronXL、Blazor和C#來完成此任務。 您可以使用IronXL將CSV轉換為Excel檔案

將以下程式碼新增到您的Index.razor檔案中,位於您之前新增的div元素下方。

@code {
    private string originalFileName;
    private string message = "";

    private async Task OnInputFileChange(InputFileChangeEventArgs e)
    {
        var file = e.File;
        originalFileName = file.Name;

        try
        {
            // Read the uploaded file into a memory stream
            using var memoryStream = new MemoryStream();
            await file.OpenReadStream().CopyToAsync(memoryStream);

            // Load the workbook using IronXL
            WorkBook workBook = WorkBook.Load(memoryStream);

            // Save the workbook as a CSV file
            string outputPath = "sample.csv";
            workBook.SaveAsCsv(outputPath);

            message = "Conversion completed!";
        }
        catch (Exception ex)
        {
            message = $"An error occurred: {ex.Message}";
        }
    }
}

此程式碼定義了一個名為InputFile元件上傳Excel電子表單後會觸發該方法; Excel可以是XLS或XLSX格式。 該程式碼讀取已上傳的基本Excel文件,將其載入到WorkBook儲存為CSV檔案。轉換的狀態將顯示在頁面上的資訊區域中。

程式碼解析

首先,查看完整的程式碼:

@page "/"
@using Microsoft.AspNetCore.Components.Forms
@using IronXL
@using System.IO
@using System.Threading.Tasks

<style>
    body{
        background-color: skyblue
    }
    .container {
        max-width: 800px;
        margin: 0 auto;
        font-family: Arial, sans-serif;
    }

    h3 {
        margin-top: 30px;
        font-size: 30px;
        margin-bottom: 30px;
    }

    .button {
        background-color: #4CAF50;
        border: none;
        color: white;
        padding: 15px 32px;
        text-align: center;
        text-decoration: none;
        display: inline-block;
        font-size: 16px;
        margin: 15px 0;
        cursor: pointer;
    }
    span {
        font-size: 20px;
    }
</style>

<div class="container">
    <h3>File Upload</h3>

    <InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" />
    <h3>Selected File: @originalFileName</h3>
    <h3 style="color:bisque">Is File converted: <span>@message</span></h3>
</div>

@code {
    private string originalFileName;
    private string message = "";

    private async Task OnInputFileChange(InputFileChangeEventArgs e)
    {
        var file = e.File;
        originalFileName = file.Name;

        try
        {
            // Read the uploaded file into a memory stream
            using var memoryStream = new MemoryStream();
            await file.OpenReadStream().CopyToAsync(memoryStream);

            // Load the workbook using IronXL
            WorkBook workBook = WorkBook.Load(memoryStream);

            // Save the workbook as a CSV file
            string outputPath = "sample.csv";
            workBook.SaveAsCsv(outputPath);

            message = "Conversion completed!";
        }
        catch (Exception ex)
        {
            message = $"An error occurred: {ex.Message}";
        }
    }
}

讓我們進一步解析程式碼:

  1. 當文件被上傳時,會觸發InputFileChangeEventArgs物件給它。 此物件包含有關上傳文件的資訊,如其名稱和大小。
  2. 在名為originalFileName的變數中儲存原始文件名,以在頁面上顯示它。
  3. 在一個try-catch區塊中,建立一個新的MemoryStream物件來讀取上傳文件的內容。 using語句確保在不再需要時正確釋放記憶體流。
  4. 使用await關鍵字將上傳文件的內容非同步地複製到記憶體流中。 這確保在讀取文件時應用程式保持響應。
  5. 接下來,使用WorkBook物件中。 該物件代表整個Excel工作簿,包括其工作表、儲存格和資料。
  6. 然後,為轉換後的CSV檔案指定一個輸出文件名。在此情況下,我們使用名稱"sample.csv"。
  7. 然後使用WorkBook物件的SaveAsCsv方法,以指定的輸出文件名將工作簿儲存為CSV檔案。
  8. 如果轉換成功,將顯示一條資訊以表示轉換已完成。 如果出現錯誤,則捕獲異常並顯示錯誤資訊。

測試應用程式

既然Blazor應用程式已完成,是時候測試它了! 按F5在Visual Studio中運行您的應用程式。 當應用程式運行時,您應該會在頁面上看到一個文件上傳按鈕。

如何在Blazor中匯出為CSV,圖1:運行Blazor應用程式 運行Blazor應用程式

單擊該按鈕,然後選擇一個Excel文件上傳。 在InputFile元件的接受屬性中列出了接受的文件格式。

如何在Blazor中匯出為CSV,圖2:選擇一個Excel文件 選擇一個Excel文件

選擇文件後,應用程式將讀取該文件,使用IronXL將其轉換為CSV格式,並以指定的輸出文件名儲存轉換後的文件。 您應該會看到一條消息,指示轉換的狀態以及原始文件名。

如何在Blazor中匯出為CSV,圖3:轉換狀態 轉換狀態

恭喜! 您已成功構建了一個Blazor應用程式,能夠使用IronXL將Excel文件匯出為CSV格式。 以下截圖顯示了上述程式的輸出。

如何在Blazor中匯出為CSV,圖4:輸出Excel文件 輸出的Excel文件

結論

此教程演示了如何構建一個Blazor應用程式,能夠使用IronXL將Excel文件匯出為CSV格式。 我們展示了如何建立文件上傳元件,處理文件上傳,並使用IronXL的強大功能將Excel文件轉換為CSV格式。

通過將IronXL整合到您的Blazor應用程式中,您可以輕鬆處理各種與Excel相關的任務,例如匯入、操控和匯出資料。 這為您的專案開辟了廣泛的可能性,並幫助您為使用者提供更豐富的體驗。 您可以在Blazor中使用IronXL程式庫將CSV轉換為Excel

IronXL提供免費試用,允許您在購買之前測試其功能和能力。 試用期結束後,IronXL的授權價格從$999開始。

常見問題

如何在 Blazor 應用程式中將 Excel 文件轉換為 CSV 格式?

您可以在 Blazor 應用程式中使用 IronXL 將 Excel 文件轉換為 CSV 格式。首先,設置一個 Blazor 伺服器項目,通過封裝管理器主控台安裝 IronXL,並用 `InputFile` 元件建立一個文件上傳元件。然後,將 Excel 文件讀入記憶體流,使用 IronXL 將其載入到 WorkBook 物件中,並使用 SaveAsCsv 方法將文件匯出為 CSV。

在 Blazor 應用程式中使用 IronXL 的目的何在?

IronXL 用於 Blazor 應用程式中,以便在不需要 Microsoft Office 或 Excel Interop 的情況下處理 Excel 資料。它允許開發者以程式方式讀取、操作和匯出 Excel 資料,支援導入資料、格式化以及將 Excel 文件轉換為 CSV 等格式的功能。

我可以測試我的 Blazor 應用程式以轉換 Excel 文件為 CSV 嗎?

是的,您可以在 Visual Studio 中運行 Blazor 應用程式來測試。使用文件上傳元件選擇一個 Excel 文件。該應用程式將使用 IronXL 把選擇的文件轉換為 CSV,並提供轉換狀態的反饋。

using IronXL 比 Excel Interop 有哪些優勢?

using IronXL 比 Excel Interop 提供多項優勢,包括無需安裝 Microsoft Office 即可操作 Excel 文件,支持多種 Excel 格式(XLS、XLSX、CSV),並與 .NET 應用程式相容,提升性能與部署的便利性。

如何在我的 Blazor 項目中安裝 IronXL?

要在您的 Blazor 項目中安裝 IronXL,請在 Visual Studio 的封裝管理器主控台中運行命令:Install-Package IronXL.Excel。這將安裝該程式庫,使您能夠開始以程式方式處理 Excel 文件。

IronXL 支援哪些 Excel 文件格式在 Blazor 中進行轉換?

IronXL 支援多種 Excel 文件格式在 Blazor 中進行轉換,包括 .xls、.xlsx、.xlsm、.xltx 和 .csv,允許靈活地處理應用程式中的 Excel 資料。

如何在 Blazor 應用程式中建立一個文件上傳元件?

要在 Blazor 應用程式中建立文件上傳元件,使用 Microsoft.AspNetCore.Components.Forms 命名空間中的 `InputFile` 元件。此元件使使用者能夠上傳文件,然後可以使用 IronXL 進行 Excel 轉 CSV 等任務的處理。

IronXL 是否提供免費試用?

是的,IronXL 提供免費試用,您可以在購買前探索其功能與能力。在試用期間結束後,您可以根據項目的需求選擇不同的授權選項。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話