IRONSOFTWAREHOME
USING IRONXL

如何在 Blazor 中导出到 CSV

Curtis Chau
Curtis Chau
Updated: 2026年4月21日

今天,我们将深入探讨如何使用Blazor和IronXL将Excel文件转换为CSV格式。 在本教程结束时,您将能够创建一个基本的 Blazor 应用程序,以 CSV 等各种格式导出 Excel 数据。

介绍 IronXL

IronXL是一个功能强大的.NET Excel库,设计用于处理包括XLS、XLSX、XLSM、XLTX和CSV在内的多种格式的Excel文件。它允许开发人员无需Microsoft Office或Excel Interop即可以编程方式读取、写入和操作Excel数据。

使用IronXL,您可以创建、加载和保存Excel工作簿,并对单个单元格或范围进行读写操作。 它还支持高级功能,如格式化公式图表和数据透视表。 IronXL兼容多种.NET框架,并可与C#和VB.NET等流行语言一起使用。

将Excel文件转换为CSV的步骤

设置您的Blazor项目

首先,您需要创建一个新的Blazor服务器项目。 打开Visual Studio,创建一个新项目并选择"Blazor Server App"模板。 给项目命名,然后点击"创建"。

项目创建完成后,打开Pages文件夹并找到Index.razor文件。这是添加和编写Blazor组件以处理文件上传和转换的地方。

安装IronXL

在开始编写代码之前,有必要安装IronXL库。 在Visual Studio中打开Package Manager Console,并运行以下命令:

PM > 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>
Text

此代码设置了文件上传组件,配有按钮和消息区域以显示文件转换的状态。 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}";
        }
    }
}
Text

该代码定义一个名为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}";
        }
    }
}
Text

让我们进一步分解代码:

  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组件的accept属性中。

如何在Blazor中导出为CSV,图2:选择一个Excel文件 选择Excel文件

选择文件后,应用程序将读取文件,使用IronXL将其转换为CSV格式,并将转换后的文件保存为指定的输出文件名。 您应该会看到一条消息,指示转换状态以及原始文件名。

如何在Blazor中导出为CSV,图3:转换状态 转换状态

祝贺您! 您已成功构建一个可以使用IronXL将Excel文件导出为CSV格式的Blazor应用程序。 以下截图显示了上述程序的输出。

如何在Blazor中导出为CSV,图4:输出的Excel文件 输出 Excel 文件

结论

此教程演示了如何构建一个可以使用IronXL将Excel文件导出为CSV格式的Blazor应用程序。 我们演示了如何创建文件上传组件、处理文件上传以及使用IronXL的强大功能将Excel文件转换为CSV格式。

通过将IronXL集成到您的Blazor应用程序中,您可以轻松处理各种与Excel相关的任务,如导入、操作和导出数据。 这为您的项目打开了广泛的可能性,并帮助您为用户提供更丰富的体验。 您可以使用IronXL库,在Blazor中将CSV转换为Excel

IronXL提供免费试用,让您在购买之前测试其功能和能力。 在试用期结束后,IronXL的许可证起价为$999。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户