C#でOleDbDataAdapterを使用し、Excelファイル内のスプレッドシートからSELECTを行う方法
ExcelファイルのスプレッドシートからOleDbDataAdapterを使用してSELECTを行うには、以下の手順に従います。
- コードファイルの最初の行には、以下のネームスペースを追加します:
using System.Data;
using System.Data.OleDb;
- Excel ファイルのパスやその他のオプションを指定した接続文字列を作成します。
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\excel\file.xlsx;Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'";
「C:\path\to\your\excel\file.xlsx」を実在の Excel ファイルのパスに必ず置き換えてください。
- OleDbConnectionオブジェクトを作成し、接続文字列を引数として渡す:
OleDbConnection connection = new OleDbConnection(connectionString);
- 接続を開く
connection.Open();
- 列名およびテーブル名を指定してスプレッドシートから選択するクエリ文字列を作成:
string query = "SELECT * FROM [Sheet1$]";
実際の作業ブックとして選択するワークシートの名称と「シート1」を置き換えてください。
- OleDbDataAdapterオブジェクトを作成し、クエリ文字列とOleDb接続オブジェクトを引数に渡します。
OleDbDataAdapter adapter = new OleDbDataAdapter(query, connection);
- DataTableオブジェクトを作成してクエリ結果を格納します
DataTable dataTable = new DataTable();
- OleDbDataAdapterのFillメソッドを使用して、クエリ結果をDataTableに格納する
adapter.Fill(dataTable);
- 接続を閉じます。
connection.Close();
今、DataTable オブジェクトのデータを使用していくことができます。例えば、あなたは DataTable の行と列をループし、特定のセルの値を参照できます。
完全なコードの例:
using System.Data;
using System.Data.OleDb;
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\excel\file.xlsx;Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'";
OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();
string query = "SELECT * FROM [Sheet1$]";
OleDbDataAdapter adapter = new OleDbDataAdapter(query, connection);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
connection.Close();
// 使用 dataTable 进行进一步的操作
注意:上記サンプルで使用されている接続文字列は、Excelファイルの最新フォーマット(.xlsx)およびMicrosoft ACE OLEDBドライバー向けです。古いExcelファイルフォーマット(.xls)を使用している場合、「Microsoft.Jet.OLEDB.4.0」などの古いバージョンのドライバーを使用し、接続文字列を適宜調整する必要があります。