序章
OleDbConnection は、 Excel ファイルなどのさまざまなデータ ソースにアクセスするために .NET Framework によって提供されるオブジェクトです。OleDbConnection を使用して Excel ファイルに接続すると、プログラムは Excel ファイルを一種のデータベースとして扱い、各ワークシートがデータベース テーブルになります。したがって、SQL クエリ言語を使用して Excel ファイル内のデータを取得および操作できます。
Excel ファイルを接続するには、接続文字列を使用する必要があります。接続文字列は、接続先のデータ ソースとその他の接続パラメータを指定します。Excel ファイルの場合、接続文字列には通常、プロバイダー名、Excel ファイルへのパス、および拡張プロパティが含まれます。以下は接続文字列の例です。
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={Excel文件路径};Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'";
上記のコードでは、{Excel ファイル パス} を実際の Excel ファイル パスに置き換える必要があります。Provider パラメーターは、使用する OleDb プロバイダー名を指定します。新しいバージョンの Excel ファイルの場合は、通常、「Microsoft.ACE.OLEDB.12.0」プロバイダーが使用されます。古いバージョンの Excel ファイルの場合は、「Microsoft.Jet.OLEDB.4.0」プロバイダーの使用が必要になる場合があります。Extended Properties パラメーターは、HDR (最初の行がヘッダーかどうか) や IMEX (インポート/エクスポート モード) などの追加の接続パラメーターを指定します。
接続が成功したら、OleDbCommand オブジェクトと OleDbDataReader オブジェクトを使用して SQL クエリを実行し、Excel ファイル内のデータを読み取ることができます。OleDbCommand オブジェクトを使用して、SELECT、INSERT、UPDATE、DELETE ステートメントなどのさまざまな SQL ステートメントを実行します。クエリ結果セットは、OleDbDataReader オブジェクトを使用して読み取ることができます。サンプルコードは次のとおりです。
OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();
OleDbCommand command = new OleDbCommand("SELECT * FROM [Sheet1$]", connection);
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
string column1 = reader[0].ToString();
string column2 = reader[1].ToString();
// 读取更多列...
}
connection.Close();
上記のコードでは、OleDbConnection オブジェクトを使用して接続が開かれます。次に、OleDbCommand オブジェクトを使用して SELECT ステートメントを実行し、OleDbDataReader オブジェクトを使用してクエリ結果を読み取ります。各行を読み取るときに、OleDbDataReader オブジェクトのインデクサーまたは GetXXX メソッドを使用して各列の値を取得できます。最後に、接続を明示的に閉じる必要があります。
これは、Excel ファイルを読み取るための OleDbConnection の基本原則です。これが、OleDbConnection と Excel ファイルの関係をより深く理解するのに役立つことを願っています。
OleDbConnectionを使用してexeでExcelを読み取る
Excel ファイルを exe プログラムで読み取る必要がある場合、OleDbConnection を使用して Excel ファイルに接続できます。この方法を使用すると、データベースを読み取るのと同じくらい簡単に Excel ファイル内のデータを読み取ることができます。
まず、プログラムに System.Data.OleDb 名前空間への参照を追加する必要があります。次に、次のコードを使用して Excel ファイルを連結します。
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={Excel文件路径};Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'";
OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();
上記のコードでは、{Excel ファイル パス} を実際の Excel ファイル パスに置き換える必要があります。Excel ファイルが以前のバージョンの場合は、接続文字列の「12.0」を対応するバージョン番号に変更する必要があります。
接続が成功したら、OleDbCommand と OleDbDataReader を使用して SQL クエリを実行し、Excel ファイルのデータを読み取ることができます。簡単な例を次に示します。
OleDbCommand command = new OleDbCommand("SELECT * FROM [{Sheet名称}$]", connection);
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
string column1 = reader[0].ToString();
string column2 = reader[1].ToString();
// 读取更多列...
}
上記のコードでは、{Sheet name} を、読み取りたいワークシートの名前に置き換える必要があります。「SELECT *」ステートメントを使用してすべての列を選択することも、「SELECT {列名}」ステートメントを使用して特定の列を選択することもできます。
最後に、プログラム内で接続を明示的に閉じる必要があります。
connection.Close();
OleDbConnection を使用して Excel ファイルを読み取る基本的な手順は次のとおりです。Excel ファイルを読む際の参考になれば幸いです。
::: 警告⚠️
注: 次の回避策は Windows オペレーティング システムのみに適用されます。
:::
DLL ダイナミック リンク ライブラリの OleDbConnection を使用して Excel を読み取るときに、「Microsoft.ACE.OLEDB.12.0」プロバイダーがローカル コンピューターに登録されていません。」というエラーが発生する場合は、Microsoft Access データベース エンジン 2010 再頒布可能パッケージをインストールする必要があります。
- Microsoft 公式 Web サイトから Microsoft Access データベース エンジン 2010 再頒布可能ファイルをダウンロードしてください:公式 Microsoft ダウンロード センターから Microsoft Access データベース エンジン 2010 再頒布可能ファイルをダウンロードします。
- お使いのOSとExcelファイルの桁数に応じて、対応するインストーラーをダウンロードしてください。
- ダウンロードしたインストーラーを実行し、プロンプトに従ってインストールします。
- プログラムを再起動し、OleDbConnection を使用して Excel ファイルに再度接続すると、「"Microsoft.ACE.OLEDB.12.0" プロバイダーがローカル コンピューターに登録されていません。」というエラーは表示されなくなります。
OleDbConnection を使用して Excel ファイルを読み取る場合は、Excel ファイルを一種のデータベースとして扱う必要があります。各ワークシートはデータベース テーブルです。したがって、SQL クエリ言語を使用して Excel ファイル内のデータを取得および操作できます。
OleDbConnection は他のプラグインに比べて Excel の読み込み効率が低いです。OleDbConnection を使用して Excel を読み取る場合、Excel ワークシート内のデータをメモリにロードしてから処理する必要があります。つまり、大量のデータを処理すると、メモリが不足してプログラムがクラッシュする可能性があります。さらに、OleDbConnection を使用して Excel を読み取る場合は、明示的に接続を開いたり閉じたりする必要があるため、コードが複雑になります。
したがって、大量のデータを処理する必要がある場合、またはより高い読み取り効率が必要な場合は、NPOI や EPPlus などの他のプラグインを使用することをお勧めします。これらのアドインは、データをメモリにロードせずに Excel ファイルを直接操作できるため、より大きなデータ量を処理できます。さらに、これらのアドインは、Excel ファイルの作成、編集、保存などの追加機能も提供します。
全体として、OleDbConnection はシンプルですが、小さな Excel ファイルを操作する場合は効率が低い方法です。大量のデータを処理する必要がある場合、またはより高い読み取り効率が必要な場合は、他のプラグインの使用を検討してください。