跳過到頁腳內容
使用 IRONXL

如何在 ASP .NET Core 中開啟 Excel 文件

本教程將演示如何在 ASP.NET Core 應用中使用 IronXL 和 IronXL 庫開啟 Excel 文件。 它將涵蓋讀取 Excel 文件的基本步驟,然後展示並保存修改過的數據回檔。

什麼是 IronXL?

IronXL 是一個 .NET Excel 庫,可在不需要 Microsoft Excel 或 Office Interop 依賴的情況下處理 Excel 文檔。 它支持 .NET Framework 和 .NET Core,提供只需幾行代碼即可寫入、操作和讀取 Excel 文件的功能。 有關讀取 Excel 文件的詳細教程,請參閱此 Excel 教程

IronXL library can read and write Excel documents, extract data from them, manipulate the data, and even create new Excel files from scratch. 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_ExcelFile.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 包

  1. 等待包安裝完成。

您的 ASP.NET Core 項目現在已經設置完成,IronXL 庫已安裝並準備使用。

創建 Razor 頁面

現在,讓我們創建一個 Razor 頁面以編寫打開 Excel 文件的代碼。

  1. 在解決方案資源管理器的 "Pages" 文件夾上右鍵單擊並選擇 "添加" > "Razor 頁面"。
  2. 將頁面名稱設置為 "ExcelOpener" 並單擊 "添加"。

如何在 ASP .NET Core 中打開 Excel 文件,圖 2:創建新 Razor 頁面 創建新 Razor 頁面

這將創建兩個文件: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);
    }
}
Public Sub OnGet()
	Try
		Data = New List(Of List(Of String))()
		' Load your Excel file
		Dim workbook = WorkBook.Load("C:\Users\Administrator\Documents\Loan.xlsx")

		' Select your Worksheet
		Dim sheet As WorkSheet = workbook.DefaultWorkSheet

		For i As Integer = 0 To sheet.RowCount - 1
			Dim row = New List(Of String)()
			For j As Integer = 0 To sheet.ColumnCount - 1
				row.Add(sheet.GetCellAt(i, j).Value.ToString())
			Next j
			Data.Add(row)
		Next i
	Catch ex As Exception
		' Handle exceptions here
		Console.WriteLine(ex.Message)
	End Try
End Sub
$vbLabelText   $csharpLabel

關鍵方法解釋

  • WorkBook.Load(filepath):從指定的文件路徑加載 Excel 文檔的方法。 它幫助加載和讀取 Excel 表。
  • workbook.DefaultWorkSheet:獲取 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>
HTML

導航到頁面

_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 中點擊 "構建" 按鈕或使用 Ctrl + Shift + B 快捷鍵來構建應用程序。 按下 F5 或在 Visual Studio 中點擊 "開始" 按鈕來運行應用程式。

一旦應用運行時,通過點擊導航欄中的對應鏈接導航到 "ExcelOpener" 頁面。 該頁面將以表格格式顯示來自 Excel 的數據。

您可以在表格中修改數據,然後點擊 "保存" 按鈕將更改保存回到 Excel 文件。

如何在 ASP .NET Core 中打開 Excel 文件,圖 3:在 Web 應用中顯示 Excel 數據 在 Web 應用中顯示 Excel 數據

本教程演示了如何在 ASP.NET Core 應用中使用 IronXL 打開 Excel 文件。 IronXL 提供了一種簡單方便的方法來讀取和操作 Excel 文件。 您可以瀏覽 IronXL 文檔以獲取更多高級功能和功能。

IronXL 提供 免費試用版,讓您評估其功能。 如果您發現它對您的項目有用,可以從 $799 開始購買許可證。

常見問題解答

如何在 ASP.NET Core 應用程序中開啟 Excel 檔案?

您可以使用 IronXL 庫在 ASP.NET Core 應用程式中開啟 Excel 檔案。首先,透過 NuGet 安裝 IronXL 套件,然後使用 WorkBook.Load 來載入您的 Excel 檔案。您可以通過選擇工作表並遍歷行和列來存取數據。

使用 IronXL 相較於 Office Interop 操作 Excel 有什麼好處?

IronXL 允許您處理 Excel 檔案而不需要 Microsoft Excel 或 Office Interop 依賴項,使其非常適合在無法安裝 Microsoft Office 的伺服器環境中使用。它支持 .NET Framework 和 .NET Core 並且可以處理 .XLS 和 .XLSX 格式。

如何在使用 Razor Pages 的 Web 應用程式中顯示 Excel 資料?

要在 Web 應用程式中顯示 Excel 資料,您可以創建一個使用 IronXL 來載入和讀取 Excel 資料的 Razor Page。使用 HTML 表單來將每個儲存格的資料呈現為文本輸入字段,允許用戶在網頁界面中查看和編輯資料。

設置 ASP.NET Core 專案來執行 Excel 操作需要什麼?

要設置 ASP.NET Core 專案以進行 Excel 操作,您需要擁有 .NET Core 3.1 或更高版本、Microsoft Visual Studio 等 IDE,以及對 ASP.NET Core 和 Razor Pages 的基本認識。從 NuGet 安裝 IronXL 套件以開始處理 Excel 檔案。

如何在 ASP.NET Core 中編輯和保存對 Excel 文件的更改?

您可以允許用戶通過 Razor Page 中的 HTML 表單修改資料來編輯和保存 Excel 文件的更改。使用 IronXL 方法如 sheet.SetCellValue 來更新資料,並使用 workbook.SaveAs 來保存修改過的 Excel 文件。

設置 Razor Page 來處理 Excel 文件操作的步驟有哪些?

設置 Razor Page 涉及在您的 ASP.NET Core 專案中創建新的 Razor Page。使用 Razor Page 來載入 IronXL 的 Excel 資料,在 Web 表單中顯示資料,並處理表單提交以更新並保存修改回 Excel 文件中。

如果我的 Excel 文件在 ASP.NET Core 中無法載入,我應該如何排除故障?

如果您的 Excel 文件無法載入,請確保文件路徑正確且應用程序可以訪問。確保 IronXL 已正確安裝,且文件格式受支持。檢查可能指出問題的任何異常或錯誤消息。

我可以在購買之前試用 IronXL 庫嗎?

是的,IronXL 提供一個免費試用版本,讓您評估其功能。您可以使用此試用版以確保它滿足您的需求,然後再決定購買許可證。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。