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>
セル値へのアクセス: Text
と Value2
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.Application
と Excel.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 中国語 Web サイトの他の関連記事を参照してください。