ホームページ > バックエンド開発 > 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.WorkbookIDisposable を実装していないため、カスタム リリース関数 (例の 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート