使用IRONXL

如何在ASP .NET Core中打开Excel文件

雷根·彭
雷根·彭
2023年七月22日
更新 2024年八月23日
分享:

本教程将演示如何在使用 IronXL 库的 ASP.NET Core 应用程序中使用 IronXL 打开 Excel 文件。 它将涵盖读取 Excel 文件的基本步骤,然后从中显示数据并将修改后的数据保存回文件。

什么是IronXL?

IronXL 是一个 .NET Excel 库,提供处理 Excel 文档的功能,无需依赖 Microsoft Excel 或 Office Interop。 它支持 .NET Framework 和 .NET Core,只需几行代码即可提供编写、操作和读取 Excel 文件的功能。 有关读取 Excel 文件的详细教程,请参考此Excel 教程

IronXL库可以读取和写入Excel文档提取数据,处理数据,甚至从头创建新的Excel文件。 IronXL不仅支持.XLS格式,还兼容.XLSX,这是一种由Microsoft开发的用于表示电子表格的XML格式文件。

前提条件

在深入研究代码之前,请确保您具备以下条件:

  1. 已安装 .NET Core 3.1 或更高版本。

  2. 适用于.NET开发的合适IDE(推荐使用Microsoft Visual Studio)。

  3. 对 ASP.NET Core 和 Razor Pages 有基本了解。

创建一个新的 .NET Core 项目

  1. 打开 Microsoft Visual Studio,选择 "创建新项目"。

  2. 从项目模板列表中选择 "ASP.NET Core Web App",然后单击 "下一步"。

  3. 为您的项目提供一个名称,例如 "Open_Excel_File_.NET_Core",选择一个位置,然后单击 "Next(下一步)"。

  4. 选择".NET Core "作为目标框架,"ASP.NET Core 3.1 或更高版本 "作为版本。 在 "项目模板 "部分,选择 "Web 应用程序 "并点击 "创建"。

安装 IronXL 软件包

下一步是在这个新创建的项目中安装 IronXL 软件包:

  1. 右键单击解决方案资源管理器中的项目,选择 "管理 NuGet 包"。

  2. 在“浏览”选项卡中,搜索“IronXL”并点击“安装”以获取IronXL.Excel包。

    如何在 ASP .NET Core 中打开 Excel 文件,图 1:在 NuGet 包管理器 UI 中搜索并安装 IronXL 包

    在NuGet包管理器UI中搜索并安装IronXL包

  3. 等待软件包安装。

    您的 ASP.NET Core 项目现已设置完毕,IronXL 库也已安装并准备就绪。

创建 Razor 页面

现在,让我们创建一个 Razor 页面,编写打开 Excel 文件的代码。

  1. 右键单击解决方案资源管理器中的 "页面 "文件夹,然后选择 "添加">"Razor 页面"。

  2. 输入 "ExcelOpener "作为页面名称,然后点击 "添加"。

    如何在ASP .NET Core中打开Excel文件,图2:创建一个新的Razer页面

    创建新的Razer页面

    这将创建两个文件:ExcelOpener.cshtmlExcelOpener.cshtml.cs

    ExcelOpener.cshtml 文件包含页面的 HTML 标记,ExcelOpener.cshtml.cs 文件包含页面的 C# 后置代码。

阅读 Excel 文件

让我们深入代码。 提供的ExcelOpenerModel类是一个Razor页面模型。 这个类有一个List<List<string>>属性Data,用于存储从Excel文件读取的数据。

public List<List<string>> Data { get; set; }

public ExcelOpenerModel()
{
    Data = new List<List<string>>();
}
public List<List<string>> Data { get; set; }

public ExcelOpenerModel()
{
    Data = new List<List<string>>();
}
Public Property Data() As List(Of List(Of String))

'INSTANT VB WARNING: The following constructor is declared outside of its associated class:
'ORIGINAL LINE: public ExcelOpenerModel()
Public Sub New()
	Data = New List(Of List(Of String))()
End Sub
$vbLabelText   $csharpLabel

OnGet方法中,IronXL 被用于加载 Excel 文件并从默认工作表(工作簿中的第一个表)读取数据。 每行表示为一个List<string>,然后所有这些列表都添加到Data属性中。

public void OnGet()
{
    try
    {
        Data = new List<List<string>>();
        //Load your Excel file
        var workbook = WorkBook.Load(@"C:\Users\Administrator\Documents\Loan.xlsx");

        //Select your Worksheet
        WorkSheet sheet = workbook.DefaultWorkSheet;

        for (int i = 0; i < sheet.RowCount; i++)
        {
            var row = new List<string>();
            for (int j = 0; j < sheet.ColumnCount; j++)
            {
                row.Add(sheet.GetCellAt(i, j).Value.ToString());
            }
            Data.Add(row);
        }
    }
    catch (Exception ex)
    {
        //Handle exceptions here
        Console.WriteLine(ex.Message);
    }
}
public void OnGet()
{
    try
    {
        Data = new List<List<string>>();
        //Load your Excel file
        var workbook = WorkBook.Load(@"C:\Users\Administrator\Documents\Loan.xlsx");

        //Select your Worksheet
        WorkSheet sheet = workbook.DefaultWorkSheet;

        for (int i = 0; i < sheet.RowCount; i++)
        {
            var row = new List<string>();
            for (int j = 0; j < sheet.ColumnCount; j++)
            {
                row.Add(sheet.GetCellAt(i, j).Value.ToString());
            }
            Data.Add(row);
        }
    }
    catch (Exception ex)
    {
        //Handle exceptions here
        Console.WriteLine(ex.Message);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

解释的主要方法

  • WorkBook.Load(filepath):此方法从指定的文件路径加载 Excel 文档。 这有助于加载和阅读 Excel 表。
  • workbook.DefaultWorkSheet:此属性获取Excel电子表格中的默认(第一个)Excel工作表。
  • sheet.GetCellAt(i, j).Value.ToString():这从指定的行和列索引中获取单元格,并将其值转换为字符串。 这是一个索引方法示例,它可以根据行和列索引访问 Excel 文件中的特定单元格或范围。

简短解释

ExcelOpener.cshtml.cs文件中,一个名为ExcelOpenerModel的类表示Razor页面模型。 它包含一个名为Data的属性,类型为List<List<string>>,用于存储Excel文件中的数据。

OnGet方法在请求页面时调用,负责从Excel文件读取数据。它使用IronXL加载Excel文件,选择默认工作表,并迭代行和列以填充Data属性。

编写 Excel 文件

ExcelOpenerModel类中的OnPost方法用于保存对Excel文件的修改。它首先加载Excel文件并检索默认工作表。 然后,它将Data中的值写入工作表中的单元格,并将工作簿保存到一个新文件中。

public void OnPost()
{
    try
    {
        //Load your Excel file
        var workbook = WorkBook.Load(@"C:\Users\Administrator\Documents\Loan.xlsx");

        //Select your Worksheet
        var sheet = workbook.DefaultWorkSheet;

        for (int i = 0; i < Data.Count; i++)
        {
            for (int j = 0; j < Data [i].Count; j++)
            {
                sheet.SetCellValue(i, j, Data [i][j]);
            }
        }

        // Save the Excel file
        var filename = "C:\\ModifiedData.xlsx"
        workbook.SaveAs(filename);
    }
    catch (Exception ex)
    {
        //Handle exceptions here
        Console.WriteLine(ex.Message);
    }
}
public void OnPost()
{
    try
    {
        //Load your Excel file
        var workbook = WorkBook.Load(@"C:\Users\Administrator\Documents\Loan.xlsx");

        //Select your Worksheet
        var sheet = workbook.DefaultWorkSheet;

        for (int i = 0; i < Data.Count; i++)
        {
            for (int j = 0; j < Data [i].Count; j++)
            {
                sheet.SetCellValue(i, j, Data [i][j]);
            }
        }

        // Save the Excel file
        var filename = "C:\\ModifiedData.xlsx"
        workbook.SaveAs(filename);
    }
    catch (Exception ex)
    {
        //Handle exceptions here
        Console.WriteLine(ex.Message);
    }
}
Public Sub OnPost()
	Try
		'Load your Excel file
		Dim workbook = WorkBook.Load("C:\Users\Administrator\Documents\Loan.xlsx")

		'Select your Worksheet
		Dim sheet = workbook.DefaultWorkSheet

		For i As Integer = 0 To Data.Count - 1
			Dim j As Integer = 0
			Do While j < Data (i).Count
				sheet.SetCellValue(i, j, Data (i)(j))
				j += 1
			Loop
		Next i

		' Save the Excel file
		Dim filename = "C:\ModifiedData.xlsx" workbook.SaveAs(filename)
	Catch ex As Exception
		'Handle exceptions here
		Console.WriteLine(ex.Message)
	End Try
End Sub
$vbLabelText   $csharpLabel

关键方法说明

  • sheet.SetCellValue(i, j, Data[i][j]):此方法设置在指定行和列索引处的单元格的值。
  • workbook.SaveAs(filepath):此方法将 Excel 工作簿保存到指定的文件路径。

简短解释

OnPost 方法在提交表单时被调用,并将修改后的数据保存回 Excel 文件。它加载 Excel 文件,选择默认工作表,并根据从表单接收到的修改数据更新单元格值。

编辑 Excel 数据的 HTML 表格

ExcelOpener.cshtml中,定义了一个表单,用于显示和编辑Excel文件中的数据。每个单元格的值都显示在一个文本输入框中。 编辑后,点击“保存”按钮将提交表单,触发OnPost方法并将更改保存到Excel文件中。

@page
@model Open_Excel_File_.NET_Core.Pages.ExcelOpenerModel

<form method="post">
    <table class="table table-bordered table-striped">
        <!-- Bootstrap classes for tables -->
        @for (int i = 0; i < Model.Data.Count; i++)
        {
            <tr>
                @for (int j = 0; j < Model.Data[i].Count; j++)
                {
                    <td>
                        <input type="text" class="form-control" name="Data[@i][@j]" value="@Model.Data[i][j]" /> <!-- Bootstrap class for form controls -->
                    </td>
                }
            </tr>
        }
    </table>

    <input type="submit" class="btn btn-primary" value="Save" /> <!-- Bootstrap classes for buttons -->
</form>
@page
@model Open_Excel_File_.NET_Core.Pages.ExcelOpenerModel

<form method="post">
    <table class="table table-bordered table-striped">
        <!-- Bootstrap classes for tables -->
        @for (int i = 0; i < Model.Data.Count; i++)
        {
            <tr>
                @for (int j = 0; j < Model.Data[i].Count; j++)
                {
                    <td>
                        <input type="text" class="form-control" name="Data[@i][@j]" value="@Model.Data[i][j]" /> <!-- Bootstrap class for form controls -->
                    </td>
                }
            </tr>
        }
    </table>

    <input type="submit" class="btn btn-primary" value="Save" /> <!-- Bootstrap classes for buttons -->
</form>
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

页面导航

_Layout.cshtml中,将页面的链接添加到导航菜单。 点击此链接,您将进入 Excel 开启页面。

<li class="nav-item">
    <a class="nav-link text-dark" asp-area="" asp-page="/ExcelOpener">ExcelOpener</a>
</li>
<li class="nav-item">
    <a class="nav-link text-dark" asp-area="" asp-page="/ExcelOpener">ExcelOpener</a>
</li>
HTML

运行应用程序并解释输出结果

通过单击 Visual Studio 中的“Build”按钮或使用Ctrl + Shift + B快捷键来构建应用程序。 按 F5 或单击 Visual Studio 中的 "开始 "按钮运行应用程序。

应用程序运行后,点击导航栏中的相应链接,导航至 "ExcelOpener "页面。 页面将以表格形式显示 Excel 中的数据。

您可以修改表格中的数据,然后单击 "保存 "按钮将更改保存回 Excel 文件。

如何在 ASP .NET Core 中打开 Excel 文件,图 3:在 Web 应用程序中显示 Excel 数据

在网页应用程序中显示Excel数据

本教程演示了如何在 ASP.NET Core 应用程序中使用 IronXL 打开 Excel 文件。 IronXL.Excel 提供了一种简单方便的方式来读取和处理 Excel 文件。 您可以浏览 IronXL 文档,了解更多高级特性和功能。

IronXL 提供免费试用,让您评估其功能。 如果您发现它对您的项目有用,您可以购买从$749起的许可证。

雷根·彭
软件工程师
Regan毕业于雷丁大学,拥有电子工程学士学位。在加入Iron Software之前,他的前工作职位要求他专注于单一任务;他在Iron Software最喜欢的是能进行多种工作,无论是增加销售价值、技术支持、产品开发还是营销。他喜欢了解开发人员如何使用Iron Software的库,并利用这些知识不断改进文档和开发产品。
< 前一页
如何使用IronXL处理Excel文件:一个.NET Excel库
下一步 >
如何在不丢失数据的情况下合并Excel中的单元格