Delphi Programming / Object Pascal

[掲載 2002年01月16日] [更新 2016年05月04日] Excel出力コンポーネント |
Excel 出力コンポーネント
使用方法と再配布必要なランタイムライブラリ |
| 動作確認等 |
説明は Windows 7 U64(SP1) + Delphi XE(UP1) Pro で作成 |
以下は、Delphi に付属している DBDEMOS というデータベースを使用した例です。指定したフォルダにエクセルのブックを新規作成して、Sheet1 にデータを書込みます。
- 新規プロジェクトのフォームに下図のようにコントロールを配置
- Table1 のプロパティを設定
DatabaseName を DBDEMOS
TableName を customer.db
- 本コンポの DataSet を Table1 にする
- 本コンポをダブルクリックして、項目エディタで出力する項目を作成する
後は実行コードを作成して実行します。 |
 |
図1
コンポーネントを配置
- Delphi を起動
- From に TTable, TButton と本コンポを配置
|
 |
図2
項目エディタで追加した項目例
- Table1 を Active にする
- 本コンポをダブルクリック
- 項目を追加する
|

|
図3
項目エディタのプロパティ
|
 |
図4
実行結果例
|
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Open;
plXLSOut1.FileName := 'test.xls';
plXLSOut1.FileCreate := True;
plXLSOut1.AttribOut := True;
plXLSOut1.Excute;
Table1.Close;
end;
|
このコンポーネントは、開発時に Excel Creater Ver3.0 をインストールしないと使用できません。また作成したアプリケーションを配布する際には、付属のランタイムライブラリ XlsCrt2.DLL (再配布可能) が必要です。
ヘルプでは、この DLL は Windows のシステムフォルダに置くことになっていますが、EXE と同じフォルダ内に置けば動作するようです。
Excel Creator はコンポーネントにして利用することも可能です。コンポーネントの方が使い勝手はいいのですが、DLL をレジストリに登録しなければなりません。この登録には管理者権限が必要です。そのため API 関数を使用する方式としています。API 関数を使用する場合は、DLL が、システム的にパスの通った場所にあれば済みます。
|
| DataSet プロパティを設定しなくても、エクセルの高速操作用として利用できます。この場合、処理コードは OnBeforeEnd イベント内に書きます。 |
| Ver.9.00 で Delphi 2009 と Delphi 2010 に対応しましたが、Unicode 化したわけではありません。コンポーネント内部では AnsiString を使用しています。Excel Creator の API 関数の文字列引数に、Unicode 文字列を渡すと正常動作しません。そこで AnsiString を使用するようにしました。 |
| 添付のテストプログラムでは、BDE 経由で Paradox のデータを扱っています。BDE と Paradox については以下の記事を参考にしてください。 |
|