前のブログで、ExcelのTypeライブラリーを使ってシート一覧を取得しましたが
ついでといっては、なんですが、dbGo(Ado)を使って、シート一覧を取得してみます。
TAdoQueryを使ってSQL文で、テーブル一覧を取得できないか、ちょっと調べたましたが
無理そうだったので、ここでは、
TADOConnection.OpenSchema (
const Schema: TSchemaInfo;
const Restrictions: OleVariant;
const SchemaID: OleVariant;
DataSet: TADODataSet);
メソッドを使ってテーブルを取得します。
方法は、簡単で、
OpenSchema関数のパラメータ
Schemaに TSchemaInfo.siTables
DataSetに スキーマ取得結果の書き込み先のレコードセットを指定します。
また、今回は、RestrictionsとSchemaIDは使用しませんのでEmptyParamを指定します。
さて、やってみます。
フォームにTADOConnectionを配置し、ConnectionStringの
ProviderにMicrosoft.ACE.OLEDB.12.0
Data SourceにExcelのワークブックのパス
Extended PropertiesにExcel 12.0(Excel2010の場合)
を指定します。
(ConnectionStringについては、http://connectionstrings.com/ が参考になります。)
次に結果格納先としての TADODataSetコンポーネントを配置し、Connectionプロパティに
上記の TADOConnectionコンポーネントを指定します。
あとは、通常の操作で、DataSource,DbGridを配置し、それぞれ接続します。
あとはボタンなどを配置しそのイベントハンドラに
ADOConnection1.Connected := true;
ADOConnection1.OpenSchema(siTables, EmptyParam, EmptyParam,ADODataSet1);
のようなコードを書きます。
で実行すれば、
のように結果が得られます(右側)
なお、torry's Delphiのページにもうちょっと詳しいサンプルがあります。http://www.swissdelphicenter.ch/torry/showcode.php?id=1433
また、AdoでのExcelのSchema,については、MSのHELP
http://support.microsoft.com/kb/257819/ja
が参考になります。
0 件のコメント:
コメントを投稿