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
実行結果例
  • 作成したブックを Excel 2010 で表示

リスト1
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 を使用しない場合


DataSet プロパティを設定しなくても、エクセルの高速操作用として利用できます。この場合、処理コードは OnBeforeEnd イベント内に書きます。




Unicode には未対応


Ver.9.00 で Delphi 2009 と Delphi 2010 に対応しましたが、Unicode 化したわけではありません。コンポーネント内部では AnsiString を使用しています。Excel Creator の API 関数の文字列引数に、Unicode 文字列を渡すと正常動作しません。そこで AnsiString を使用するようにしました。




添付のテストプログラムについて


添付のテストプログラムでは、BDE 経由で Paradox のデータを扱っています。BDE と Paradox については以下の記事を参考にしてください。