如何在 C# 中使用 Excel Interop 的另一種方法

C# Excel 互通解決方法

This article was translated from English: Does it need improvement?
Translated
View the article in English

許多專案都使用 Excel 來進行清晰的溝通,但如果您使用的是Microsoft.Office.Interop.Excel ,那麼您很可能已經遇到許多複雜的程式碼行。 在本教學中,我們將使用 IronXL 作為 C# Excel Interop 的變通方案,這樣您就不必使用 Interop 來完成您的專案。 您可以使用 C# 程式設計來使用 Excel 檔案資料、建立 Excel 檔案、編輯和操作所有資料。

C# Excel 無互通性

  • 下載 Excel 無互通庫
  • 使用 C# 存取 Excel 文件
  • 建立一個新的 Excel 檔案並透過程式插入數據
  • 修改現有檔案、更新和替換儲存格值、刪除行等等
How To Work related to C# Excel 互通解決方法

如何替代使用 Excel Interop

  1. 安裝 Excel 庫以處理 Excel 檔案。
  2. 開啟Workbook並新增目前 Excel 檔案。
  3. 設定預設工作表。
  4. 從 Excel 工作簿中讀取值。
  5. 處理並顯示該值。

步驟 1

1. 下載 IronXL 庫

下載 IronXL 庫使用 NuGet 安裝即可免費使用該庫,然後按照本教學的步驟操作,學習如何在不使用 Interop 的情況下使用 Excel。如果您想將項目正式發布,可以購買相應的許可證。

Install-Package IronXL.Excel

操作指南

2. 存取 Excel 文件數據

為了開發商業應用程序,我們需要能夠輕鬆、完美地存取 Excel 文件中的數據,並能夠根據各種要求以程式設計方式操作這些數據。 使用 IronXL 時,可以使用WorkBook.Load()函數,該函數允許讀取特定的 Excel 檔案。

存取工作簿後,您可以使用WorkBook.GetWorkSheet()函數選擇特定的工作表。 現在您已擁有所有Excel檔案資料。 以下範例展示了我們如何在 C# 專案中使用這些函數來取得 Excel 檔案資料。

// Import the IronXL library to access its functionality
using IronXL;

static void Main(string[] args)
{
    // Access Excel file
    WorkBook wb = WorkBook.Load("sample.xlsx");
    // Access WorkSheet of Excel file
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Get a specific cell value, convert it to a string, and print it
    string a = ws["A5"].Value.ToString();
    Console.WriteLine("Getting Single Value:\n\n   Value of Cell A5: {0}", a);

    Console.WriteLine("\nGetting Many Cells Value using Loop:\n");
    // Get multiple cell values using range function and iterate through them
    foreach (var cell in ws["B2:B10"])
    {
        Console.WriteLine("   Value is: {0}", cell.Text);
    }

    Console.ReadKey(); // Pause the console to view output
}
// Import the IronXL library to access its functionality
using IronXL;

static void Main(string[] args)
{
    // Access Excel file
    WorkBook wb = WorkBook.Load("sample.xlsx");
    // Access WorkSheet of Excel file
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Get a specific cell value, convert it to a string, and print it
    string a = ws["A5"].Value.ToString();
    Console.WriteLine("Getting Single Value:\n\n   Value of Cell A5: {0}", a);

    Console.WriteLine("\nGetting Many Cells Value using Loop:\n");
    // Get multiple cell values using range function and iterate through them
    foreach (var cell in ws["B2:B10"])
    {
        Console.WriteLine("   Value is: {0}", cell.Text);
    }

    Console.ReadKey(); // Pause the console to view output
}
$vbLabelText   $csharpLabel

這段程式碼將產生以下結果:

1output related to 2. 存取 Excel 文件數據

Excel 文件內容如下:

1excel related to 2. 存取 Excel 文件數據

我們可以看到,我們的 Excel 檔案sample.xlsxA5儲存格中包含small businessB2B10的其他值相同,並顯示在輸出中。

數據集和數據表

我們也可以使用這些說明將 Excel 檔案作為資料集和資料表進行處理。

// Access WorkBook and WorkSheet
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");

// Convert workbook to DataSet
DataSet ds = wb.ToDataSet();

// Convert worksheet to DataTable
DataTable dt = ws.ToDataTable(true);
// Access WorkBook and WorkSheet
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");

// Convert workbook to DataSet
DataSet ds = wb.ToDataSet();

// Convert worksheet to DataTable
DataTable dt = ws.ToDataTable(true);
$vbLabelText   $csharpLabel

您可以閱讀更多關於如何使用Excel 資料集和資料表的內容,其中提供了更多程式碼範例和流程說明。

現在,我們將看到另一個方面,即在我們的 C# 專案中建立一個新的 Excel 檔案。


3. 建立新的 Excel 文件

我們可以輕鬆地在 C# 專案中建立一個新的 Excel 電子表格,並透過程式設計方式向其中插入資料。 為了實現這一目標,IronXL 提供了WorkBook.Create()函數,該函數會建立一個新的 Excel 檔案。

然後我們可以使用WorkBook.CreateWorkSheet()函數來建立所需數量的工作表。

之後,我們還可以插入數據,如下例所示:

// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Create a new WorkBook
    WorkBook wb = WorkBook.Create();

    // Create a new WorkSheet in the workbook
    WorkSheet ws = wb.CreateWorkSheet("sheet1");

    // Insert data into cells
    ws["A1"].Value = "New Value A1";
    ws["B2"].Value = "New Value B2";

    // Save the newly created Excel file
    wb.SaveAs("NewExcelFile.xlsx");
}
// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Create a new WorkBook
    WorkBook wb = WorkBook.Create();

    // Create a new WorkSheet in the workbook
    WorkSheet ws = wb.CreateWorkSheet("sheet1");

    // Insert data into cells
    ws["A1"].Value = "New Value A1";
    ws["B2"].Value = "New Value B2";

    // Save the newly created Excel file
    wb.SaveAs("NewExcelFile.xlsx");
}
$vbLabelText   $csharpLabel

上述程式碼將建立一個名為NewExcelFile.xlsx的新 Excel 文件,並在儲存格位址A1B2中分別插入值為New Value A1New Value B2新資料。 透過這種設置,您可以根據需要以相同的方式插入資料。

注意:如果您要建立新的 Excel 文件或修改現有文件,請不要忘記儲存文件,如上面的範例所示。

深入了解如何使用 C# 建立新的 Excel 電子表格,並在您的專案中嘗試程式碼。


4. 修改現有 Excel 文件

我們可以透過程式設計方式修改現有的 Excel 文件,並將更新的資料插入其中。 在修改Excel檔案時,我們將看到以下幾個方面:

  • 更新儲存格值
  • 將舊值替換為新值
  • 刪除行或列

讓我們看看如何在我們的 C# 專案中實現以上主題。

更新單元格值

更新現有Excel電子表格中的儲存格值非常簡單。 只需在專案中開啟 Excel 檔案並指定其工作表,然後按照以下範例所示更新其資料:

// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Access the WorkBook and WorkSheet
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Update A3 cell value
    ws["A3"].Value = "New Value of A3";

    // Save the updated Excel file
    wb.SaveAs("sample.xlsx");
}
// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Access the WorkBook and WorkSheet
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Update A3 cell value
    ws["A3"].Value = "New Value of A3";

    // Save the updated Excel file
    wb.SaveAs("sample.xlsx");
}
$vbLabelText   $csharpLabel

上述程式碼會將儲存格A3的值更新為New Value of A3

我們也可以使用 range 函數將多個儲存格的值更新為靜態值:

ws["A3:C3"].Value = "New Value";
ws["A3:C3"].Value = "New Value";
$vbLabelText   $csharpLabel

這將使用New Value更新 Excel 檔案中第 3 行A3C3儲存格的內容。

透過這些範例了解更多關於在 C# 中使用 Range 函數的資訊

替換單元格值

IronXL 的優點之一在於它能夠輕鬆地將現有 Excel 檔案中的old values替換為new values ,涵蓋以下所有方面:

  • 取代整個工作表中的值:
ws.Replace("old value", "new value");
ws.Replace("old value", "new value");
$vbLabelText   $csharpLabel
  • 替換特定行的值:
ws.Rows[RowIndex].Replace("old value", "new value");
ws.Rows[RowIndex].Replace("old value", "new value");
$vbLabelText   $csharpLabel
  • 替換特定列的值:
ws.Columns[ColumnIndex].Replace("old value", "new Value");
ws.Columns[ColumnIndex].Replace("old value", "new Value");
$vbLabelText   $csharpLabel
  • 替換特定範圍內的值:
ws["From:To"].Replace("old value", "new value");
ws["From:To"].Replace("old value", "new value");
$vbLabelText   $csharpLabel

讓我們來看一個例子,以便清楚地了解如何在我們的 C# 項目中使用上述函數來替換值。 在這個例子中,我們將使用 replace 函數來取代特定範圍內的值。

// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Access the WorkBook and WorkSheet
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Specify a range from B5 to G5 and replace "Normal" value with "Good"
    ws["B5:G5"].Replace("Normal", "Good");

    // Save the updated Excel file
    wb.SaveAs("sample.xlsx");
}
// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Access the WorkBook and WorkSheet
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Specify a range from B5 to G5 and replace "Normal" value with "Good"
    ws["B5:G5"].Replace("Normal", "Good");

    // Save the updated Excel file
    wb.SaveAs("sample.xlsx");
}
$vbLabelText   $csharpLabel

上述程式碼會將B5G5中的Normal值替換為Good ,工作表的其餘部分保持不變。 了解更多關於如何使用 IronXL 的此功能編輯 Excel 區域中儲存格值的資訊

刪除 Excel 檔案中的行

在應用程式開發中,我們有時需要透過程式設計方式刪除現有 Excel 檔案中的整行資料。 為此,我們使用 IronXL 的Remove()函數。 以下是一個範例:

// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Access the WorkBook and WorkSheet
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Remove the row number 2
    ws.Rows[2].Remove();

    // Save the updated Excel file
    wb.SaveAs("sample.xlsx");
}
// Import the IronXL library
using IronXL;

static void Main(string[] args)
{
    // Access the WorkBook and WorkSheet
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");

    // Remove the row number 2
    ws.Rows[2].Remove();

    // Save the updated Excel file
    wb.SaveAs("sample.xlsx");
}
$vbLabelText   $csharpLabel

上述程式碼將刪除sample.xlsx的第2行。


教程快速存取

IronXL 參考

請閱讀 IronXL 的 API 參考文檔,以了解有關所有函數、特性、類別和命名空間的更多資訊。

IronXL 參考
Documentation related to 教程快速存取

常見問題解答

如何在不使用 Interop 的情況下用 C# 讀取 Excel 檔案?

您可以使用 IronXL 在 C# 中讀取 Excel 文件,而無需 Interop。使用WorkBook.Load()函數載入文件,並使用WorkBook.GetWorkSheet()存取工作表。

如何使用 C# 程式設計方式建立新的 Excel 檔案?

使用 IronXL,您可以使用WorkBook.Create()方法建立一個新的 Excel 文件,然後使用WorkSheet.CreateWorkSheet()在其中新增資料。

是否可以在不使用 Interop 的情況下,用 C# 修改 Excel 檔案?

是的,IronXL 提供了無需 Interop 即可修改 Excel 檔案的功能,可直接更新儲存格值、取代舊值以及刪除行或列。

如何使用 IronXL 更新 Excel 表格中特定儲存格的值?

若要更新儲存格值,請使用WorkBook.GetWorkSheet()載入工作表,為儲存格賦新值,然後儲存變更。

我可以使用 IronXL 替換一系列儲存格中的值嗎?

IronXL 可讓您使用Replace()函數來取代工作表或特定範圍物件中的值。

與 Microsoft.Office.Interop.Excel 相比,使用 IronXL 有哪些優點?

IronXL 透過提供易於使用的 API 簡化了 Excel 檔案操作,減少了對複雜互通程式碼的需求,並提供了更好的效能和可靠性。

如何使用 IronXL 從 Excel 檔案中刪除一行?

若要在 IronXL 中刪除行,請在工作表的指定行物件上使用Remove()函數。

IronXL 是否支援將 Excel 檔案轉換為 DataSet 和 DataTable?

是的,IronXL 支援將工作簿轉換為資料集,將工作表轉換為資料表,從而實現更靈活的資料操作。

如何在 C# 專案中安裝 IronXL?

您可以透過從 Iron Software 網站下載或使用 NuGet 套件管理器透過以下命令將 IronXL 安裝到您的 C# 專案: Install-Package IronXL.Excel

IronXL 是否適用於處理大型 Excel 檔案?

IronXL 經過最佳化,能夠高效處理大型 Excel 文件,與傳統的互通方法相比,可提供更快的處理速度和更小的記憶體佔用。

柯蒂斯·週
技術撰稿人

Curtis Chau擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

除了開發工作之外,柯蒂斯對物聯網 (IoT) 也抱有濃厚的興趣,致力於探索硬體和軟體整合的創新方法。閒暇時,他喜歡玩遊戲和製作 Discord 機器人,將他對科技的熱愛與創造力結合。

準備好開始了嗎?
Nuget 下載 1,802,965 | 版本: 2025.12 剛剛發布