C#でExcel読み込みを完全攻略!初心者から上級者まで役立つテクニック集

C#でExcelファイルを読み込む技術はデータ処理や業務自動化において非常に強力なツールとなります。
大量のデータを効率的に処理したり、特定の情報を抽出したり、他のシステムと連携させたりすることが可能です。

この記事では、C#でExcelファイルを読み込むための基本的な方法から、より高度なテクニック、そしてトラブルシューティングまでを網羅的に解説します。
初心者の方でも理解しやすいように、具体的なコード例を交えながら、上級者の方にも役立つパフォーマンス改善の秘訣やエラーハンドリングのベストプラクティスも紹介します。

この記事を読むことで、C#でのExcel読み込みに関するあらゆる課題を解決し、あなたの開発スキルを一段階向上させることができるでしょう。

記事のポイント

  • 主要なExcel操作ライブラリの紹介
  • 基本的なExcelファイルの読み込み方法
  • 特定セルの読み込みや高速化などの応用テクニック
  • エラーハンドリングとトラブルシューティング

\ 2025年注目のフリーランスエージェント3社比較 /

収入を上げたい会社員」や「フリーランスでも安定して稼ぎたい人」にはフリーランスエージェントがオススメです。

スクロールできます
フリーランス
エージェント
特徴オススメ度リンク
登録者No1!!IT・Web業界特化のエージェントサービス
リモートでの参画率91%以上
迷ったらここで間違いなし
市場分析ツールで案件数の推移等が見れる

詳細ページ
給与保障制度あり
保障が正社員並みだから、会社員から転向する人は特にオススメ!
フリーランスの働き方と正社員並みの保障というイイトコどりができる!
リモートワーク案件に強み

詳細ページ
契約や手数料が全てオープンで手数料が安くなる仕組みがあるから、手数料が気になる人にオススメ!
健康面や教育面でのサポートも充実
業務系案件に強み

詳細ページ
複数サイトで情報収集するのがオススメ!

目次

C#でExcelファイルを読み込むための基本

Microsoft.Office.Interop.Excelを使った基本的な読み込み

Microsoft.Office.Interop.Excelは、C#からExcelを操作するための標準的なライブラリです。
このライブラリを使用することで、Excelファイルのオープン、ワークシートの選択、セル範囲の指定、データ取得など、基本的な操作を行うことができます。

ライブラリのインストールと設定

Microsoft.Office.Interop.Excelを使用するには、まずプロジェクトに参照を追加する必要があります。
Visual Studioのソリューションエクスプローラーから「依存関係」または「参照」を右クリックし「COM参照の追加」、「COM」タブから「Microsoft Excel xx.0 Object Library」を選択して追加します。

STEP
COM参照の追加を選択
STEP
「COM」タブから「Microsoft Excel xx.0 Object Library」を選択して追加

Excelファイルのオープンとワークシートの選択

以下のコードは、Excelファイルを開き、特定のワークシートを選択する例です。

いしとぅ

COMオブジェクトは必ず開放するようにしてくださいね。
Excelのプロセスが残ってしまう可能性があるため注意が必要です。

using Excel = Microsoft.Office.Interop.Excel;

static void Main()
{
    // Excelアプリケーションの作成
    Excel.Application excelApp = new Excel.Application();

    // Excelファイルのオープン
    Excel.Workbook workbook = excelApp.Workbooks.Open(@"C:\path\to\your\file.xlsx");

    // ワークシートの選択
    Excel.Worksheet worksheet = workbook.Sheets["Sheet1"];

    // COMオブジェクトの解放
    Marshal.ReleaseComObject(worksheet);
    Marshal.ReleaseComObject(workbook);
    Marshal.ReleaseComObject(excelApp);
}

参考元:Excelファイルを C# と VB.NET で読み込む “正しい” 方法 – Qiita

セル範囲の指定とデータ取得

選択したワークシートから特定のセル範囲のデータを取得するには、Rangeオブジェクトを使用します。

// セル範囲の指定
Excel.Range range = worksheet.Range["A1", "C5"];

// データの取得
object[,] values = range.Value2;

// データの処理
for (int row = 1; row <= values.GetLength(0); row++)
{
    for (int col = 1; col <= values.GetLength(1); col++)
    {
        Console.WriteLine(values[row, col]);
    }
}

// COMオブジェクトの解放
Marshal.ReleaseComObject(range);
Marshal.ReleaseComObject(worksheet);
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(excelApp);

参考元:Office 相互運用オブジェクトにアクセスする方法 – C# | Microsoft Learn

Excelファイルを1行ずつ読み込む方法

大量のデータを処理する場合、1行ずつデータを読み込むことで、メモリ使用量を抑え、効率的な処理が可能になります。

// 最終行の取得
int lastRow = worksheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row;

// 1行ずつデータの読み込み
for (int row = 1; row <= lastRow; row++)
{
    Excel.Range rowRange = worksheet.Range["A" + row, "C" + row];
    object[,] rowValues = rowRange.Value2;

    // 行データの処理
    // ...
}

特定セルを指定して読み込む方法

特定のセルのデータを読み込むには、セル座標を直接指定する方法や、名前付き範囲を使用する方法があります。

// セル座標による直接指定
string cellValue = worksheet.Range["A1"].Value2.ToString();

// 名前付き範囲の利用
Excel.Range namedRange = worksheet.Range["MyNamedRange"];
object[,] namedValues = namedRange.Value2;

C#でのExcel読み込みを高速化するテクニック

ClosedXMLを使った高速な読み込み

ClosedXMLは、Open XML形式のExcelファイルを高速に読み書きするためのライブラリです。
Microsoft.Office.Interop.Excelと比較して、メモリ使用量が少なく、処理速度が速いという特徴があります。

ライブラリのインストールと設定

ClosedXMLを使用するには、まずプロジェクトに参照を追加する必要があります。
Visual Studioのソリューションエクスプローラーから「依存関係」を右クリックし「NuGetパッケージの管理」、「参照」タブで「closedxml」と入力し検索します。
「ClosedXML」を選択し、インストールします。

STEP
ソリューションエクスプローラーから「依存関係」を右クリックし「NuGetパッケージの管理」をクリック
STEP
「参照」タブで「closedxml」と入力し、「ClosedXML」を選択し、インストールする

Excelファイルのオープンとワークシートの選択

ClosedXMLのサンプルです。
使用されたすべての行と列からデータを取得しています。

using ClosedXML.Excel;

// Excelファイルのオープン
using (XLWorkbook workbook = new XLWorkbook(@"C:\path\to\your\file.xlsx"))
{
    // ワークシートの選択
    IXLWorksheet worksheet = workbook.Worksheet("Sheet1");

    // セル範囲の指定とデータ取得
    foreach (IXLRow row in worksheet.RowsUsed())
    {
        foreach (IXLCell cell in row.CellsUsed())
        {
            Console.WriteLine(cell.Value);
        }
    }
}

C#でExcel読み込み時のエラーとトラブルシューティング

よくあるエラーとその原因

よくあるエラーとその原因について簡単ですが、まとめました。

ファイルが見つからないエラー

指定したパスにExcelファイルが存在しない場合に発生します。
ファイルパスが正しいか確認してください。

型変換エラー

セルデータの型と、読み込み先の変数の型が一致しない場合に発生します。
セルデータの型を確認し、適切な型に変換してください。

COMException

COMオブジェクトの操作中にエラーが発生した場合に発生します。
原因は多岐にわたりますが、オブジェクトの解放忘れやExcelアプリケーションの予期しない終了などが考えられます。

エラーハンドリングの実装

try-catch文による例外処理

try-catch文を使用して、例外を捕捉し、適切なエラー処理を行うことができます。

try
{
    // Excelファイルの読み込み処理
    // ...
}
catch (Exception ex)
{
    Console.WriteLine("エラーが発生しました:" + ex.Message);
    // エラーログの出力
    // ...
}

エラーログの出力

エラーが発生した場合、エラーログを出力することで原因の特定や問題の解決に役立ちます。

トラブルシューティングのヒント

デバッグ方法

Visual Studioのデバッガを使用して、コードの実行状況を確認し、エラーの原因を特定できます。

参考資料とコミュニティ

Microsoftのドキュメントや、Stack Overflowなどのコミュニティサイトには、Excel操作に関する情報が豊富にあります。これらの資料を参考にすることで、問題解決の糸口が見つかることがあります。

C#でのExcel読み込み:まとめ

この記事では、C#でExcelファイルを読み込むための基本的な方法から、高度なテクニック、そしてトラブルシューティングまでを網羅的に解説しました。

Microsoft.Office.Interop.Excel、ClosedXMLなどのライブラリを使用することで、様々なニーズに対応できます。
また、エラーハンドリングやパフォーマンス改善のテクニックを習得することで、より効率的で安定したExcel操作が可能になります。

他にもC#の様々なテクニックの紹介やエンジニアに役立つ情報を発信していますので興味のある方は以下のリンクからどうぞ!

C#やエンジニアに役立つ情報はこちら

安定して収入を上げたいエンジニアはこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次