首頁 > 後端開發 > C++ > 如何使用C#有效率地讀取Excel檔案中的資料?

如何使用C#有效率地讀取Excel檔案中的資料?

Susan Sarandon
發布: 2025-01-11 16:37:41
原創
902 人瀏覽過

How to Efficiently Read Data from Excel Files Using C#?

使用 C# 掌握 Excel 資料擷取

在 C# 中有效處理 Excel 檔案需要清楚了解命名範圍。 不依賴數組索引,而是利用 get_Range() 方法進行精確的單元格選擇。

例如,要存取儲存格 A1:

<code class="language-csharp">Excel.Worksheet sheet = workbook.Sheets["Sheet1"] as Excel.Worksheet;
Excel.Range range = sheet.get_Range("A1", Missing.Value);</code>
登入後複製

range 現在代表儲存格 A1。 使用以下方式存取其內容:

  • range.Text:顯示儲存格的格式化文字。
  • range.Value2:檢索基礎單元格值(未格式化)。

迭代單元格範圍:

<code class="language-csharp">Excel.Range range = sheet.get_Range("A1:A5", Missing.Value);

if (range != null)
{
    foreach (Excel.Range r in range)
    {
        string userText = r.Text;
        object cellValue = r.Value2; //Note: object type for flexibility
    }
}</code>
登入後複製

至關重要的是,使用 Value2 而不是 Value 以避免潛在的 C# 限制。

基本清理

透過使用後釋放 COM 物件來防止記憶體洩漏:

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

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

ReleaseRCM 是用來釋放 COM 資源的自訂函數。

範例程式碼片段

<code class="language-csharp">using ExcelTools = Ms.Office; // Assuming a custom namespace
using Excel = Microsoft.Office.Interop.Excel;

...

Excel.Workbook wkb = ExcelTools.OfficeUtil.OpenBook(excel, file);

...

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

Excel.Range range = sheet.get_Range("A1", Missing.Value);

string cellA1Text = range.Text.ToString();

...</code>
登入後複製

主要考慮因素

  • 透過將物件可見性設定為 false.
  • 在處理過程中隱藏 Excel 應用程式
  • 探索 OleDb 作為 Excel 資料存取的可行替代方案。
  • 此範例使用 C# 的 Type.Missing 作為選用參數。

這種增強的方法可確保您的 C# 應用程式中高效可靠的 Excel 資料處理。

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

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