使用IRONXL

如何在ASP .NET核心中打開Excel文件

里根普恩
里根普恩
2023年7月22日
已更新 2024年8月23日
分享:

本教程將展示如何在 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",選擇一個位置,然後點擊“下一步”。

  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. 在解決方案總管中右鍵點擊「Pages」資料夾,然後選擇「新增」>「Razor Page」。

  2. 輸入「ExcelOpener」作為頁面名稱,然後點擊「新增」。

    如何在 ASP .NET Core 中打開 Excel 檔案,圖 2:創建一個新的 Razer 頁面

    建立新 Razer 頁面

    這將創建兩個文件:ExcelOpener.cshtmlExcelOpener.cshtml.cs

    ExcelOpener.cshtml 檔案包含該頁面的 HTML 標記,而 ExcelOpener.cshtml.cs 檔案包含該頁面的 C# 後置代碼。

讀取 Excel 文件

讓我們深入研究程式碼。 所提供的ExcelOpenerModel類別是一個Razor Page Model。 此類別有一個屬性Data,其類型為List<List<string>>,將用於存儲從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 試算表中的預設(第一個)工作表。
  • sheet.GetCellAt(i, j).Value.ToString():這會獲取在指定行和列索引處的單元格,並將其值轉換為字串。 這是一個索引方法的示例,可以根據行和列的索引訪問 Excel 文件中的特定單元格或範圍。

簡短說明

ExcelOpener.cshtml.cs文件中,名為ExcelOpenerModel的類代表了Razor Page模型。 它包含一個名為 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:在網頁應用程式中顯示 Excel 數據

在 Web 應用程式中顯示 Excel 資料

本教程演示了如何在 ASP.NET Core 應用程式中使用 IronXL 打開 Excel 文件。 IronXL 提供了一種簡單且方便的方式來讀取和操作 Excel 文件。 您可以探索 IronXL 文件以了解更多進階功能和特性。

IronXL 提供免費試用,讓您評估其功能。 如果您發現它對您的專案有幫助,您可以購買從$749起的許可證。

里根普恩
軟體工程師
Regan 畢業於雷丁大學,擁有電子工程學士學位。在加入 Iron Software 之前,他的工作角色讓他專注於單一任務;而他在 Iron Software 工作中最喜歡的是他所能承擔的工作範圍,無論是增加銷售價值、技術支持、產品開發或市場營銷。他喜歡了解開發人員如何使用 Iron Software 庫,並利用這些知識不斷改進文檔和開發產品。
< 上一頁
如何使用 IronXL 處理 Excel 文件:一個 .NET Excel 庫
下一個 >
如何在 Excel 合併儲存格不丟失數據