首頁 > 後端開發 > C++ > 如何使用C#有效率地讀取和操作Excel資料?

如何使用C#有效率地讀取和操作Excel資料?

Mary-Kate Olsen
發布: 2025-01-11 16:42:44
原創
344 人瀏覽過

How to Efficiently Read and Manipulate Excel Data Using C#?

C# 與 Excel 資料:實用指南

本文詳細介紹了使用 C# 讀取和操作 Excel 資料的有效方法。 提供的範例說明了開啟 Excel 檔案、複製其內容以及搜尋電子郵件地址。 然而,直接存取和處理單元格值需要了解 Excel 獨特的資料結構。

Excel 的資料結構:命名範圍

與典型陣列不同,Excel 使用命名範圍來儲存資料。 存取特定單元格需要引用其範圍名稱(例如,左上角單元格為“A1”)。

利用Range物件

C# Excel.Range 物件表示 Excel 工作表中的一個儲存格或一組儲存格。 get_Range 物件的 Excel.Worksheet 方法檢索特定的 Range 物件。例如:

<code class="language-csharp">Excel.Range range = worksheet.get_Range("A1", Missing.Value);</code>
登入後複製

存取儲存格值:TextValue2

Text 屬性傳回使用者可見的文本,而 Value2 提供基礎值(不含格式或舍入):

<code class="language-csharp">string userVisibleText = range.Text;
string rawValue = range.Value2;</code>
登入後複製

迭代單元格範圍

foreach 循環有效地迭代一系列單元格:

<code class="language-csharp">foreach (Excel.Range cell in range1)
{
    string text = cell.Text;
    string value = cell.Value2;
}</code>
登入後複製

資源管理:適當的清理

為了有效率的資源管理,請按照與建立相反的順序釋放 Excel 物件。 由於 Excel.ApplicationExcel.Workbook 沒有實作 IDisposable,因此使用自訂發布函數(如範例中的 ReleaseRCM):

<code class="language-csharp">if (wkb != null)
    ExcelTools.OfficeUtil.ReleaseRCM(wkb);

if (excel != null)
    ExcelTools.OfficeUtil.ReleaseRCM(excel);</code>
登入後複製

完整程式碼範例

此 C# 程式碼示範了存取和顯示儲存格 A1 的值:

<code class="language-csharp">using System;
using ExcelTools = Ms.Office;
using Excel = Microsoft.Office.Interop.Excel;

namespace ExcelDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = @"C:\Users\Chris\Desktop\TestSheet.xls";
            Console.WriteLine(filePath);

            Excel.Application excelApp = null;
            Excel.Workbook workbook = null;

            try
            {
                excelApp = new Excel.Application();
                workbook = ExcelTools.OfficeUtil.OpenBook(excelApp, filePath, false, false, true);

                Excel.Worksheet sheet = workbook.Sheets["Data"] as Excel.Worksheet;

                if (sheet != null)
                {
                    Excel.Range cell = sheet.get_Range("A1", Missing.Value);
                    string a1Value = cell != null ? cell.Text.ToString() : "";
                    Console.WriteLine("A1 value: {0}", a1Value);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (workbook != null)
                    ExcelTools.OfficeUtil.ReleaseRCM(workbook);

                if (excelApp != null)
                    ExcelTools.OfficeUtil.ReleaseRCM(excelApp);
            }
        }
    }
}</code>
登入後複製

結論

在 C# 中成功處理 Excel 資料取決於理解 Excel 基於範圍的結構。使用 Excel.Range 物件及其屬性,以及仔細的資源管理,可以實現高效、可靠的資料存取和操作。

以上是如何使用C#有效率地讀取和操作Excel資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板