Delphi Programming / Object Pascal
[掲載 2009年04月21日] [更新 2014年01月13日] Delphi サンプルプログラム集 |
422_エクセルクリエータ 3.6 で Xlsx ファイルを扱う |
動作確認等 |
Windows 7 U64(SP1) + Delphi XE Pro + Excel Creator 3.6 |
|
422_ExcelCreator36_Xlsx.zip [99 KB] 2014年01月13日版 (EXEの同梱なし) |
- 2009年04月24日
- 作成するファイル名の指定に無駄があったので修正
|
- 2010年09月12日
- マイクロソフト・オフィス関係ファイルのリンク修正
|
- 2014年01月13日
- マイクロソフト・オフィス関係のリンクを削除
- エクセルクリエータがない環境用のサンプルを削除して,記事を整備
|
Excel Create 3.6 で Xlsx ファイルを扱う |
アドバンスソフトウェアが提供している Excel Creator を使用すると,エクセルのブックの操作が非常に高速に処理できます.
Excel Creator 3.6 は,Excel 2007 で実装された xlsx 形式のブック専用です.Excel Creator 3.6 には,Delphi で使用可能な API 関数コードが提供されていません.そこで,コンポーネントにしてみました.
このテストは,あらかじめ Excel Creator 3.6 をインストールしておく必要があります.
今回は,[コンポーネントのインポート] で [ExcelCreator Ver3.6] を選択し,既存のパッケージに登録してテストしてしています. |
[備考]
Excel Creator 3.6 は,単体では販売されていません,2014年01月12日現在,Excel Creator 2012 に含まれている製品で,xlsx 形式のブック専用となっています.Excel Creator 3.0 という製品も含まれていますが,こちらは Excel 2007 より前のブック形式である xls 形式専用です. |
- 図1
- [コンポーネント] [コンポーネントのインポート] で
- [タイプライブラリの取り込み] を選択してコンポーネントラッパーを作成
|
|
作成したコンポーネントをフォームに配置,下のコードでテストした結果です.このサンプルプログラムは,実行環境にも開発環境にも Excel Creator 3.6 が必要です. |
|
図2
設計時画面 |
|
図3
実行画面 |
|
図4
生成ファイル
- プロジェクトのフォルダ内の TestBook.xlsx
|
|
図5
ブックの出力内容
|
リスト1
Excel Creator 3.6 をインストールしていないと動作しない |
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, StdCtrls, ExtCtrls, OleServer, XlsxCrt_TLB;
type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Panel2: TPanel;
Xlsx1: TXlsx;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private 宣言 }
FFileName : String;
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//=============================================================================
// フォーム表示開始時の処理
//
// Excel Creator3.6がインストールされている必要がある
// コンポーネントを配置
//=============================================================================
procedure TForm1.FormShow(Sender: TObject);
begin
FFileName := 'Testbook.xlsx';
if not FileExists(FFileName) then begin
Xlsx1.CreateBook(FFileName, ver2007, 3);
Xlsx1.CloseBook(True);
end;
end;
//=============================================================================
// セルに値を設定 A1形式
// Cellの第3,4引数は元のセルに対する相対移動量
// ここではA2そのものを対象とする
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
ASheetName : String;
begin
try
Xlsx1.OpenBook(FFileName);
Xlsx1.SheetNo := 2;
Xlsx1.Cell['A2', 0, 0].Int64 := 1500;
ASheetName := Xlsx1.SheetName2[2];
Panel1.Caption := '3番目のシート名は ' + ASheetName;
Panel2.Caption := '';
except
//ブックや該当シートが存在しない場合等
end;
Xlsx1.CloseBook(True);
end;
//=============================================================================
// セルに値を設定
// 日時の場合で,文字色と背景色も指定
// Posは列,行の番号で指定する(0が左端の列と行)
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var
APos : IXlsCell;
begin
try
Xlsx1.OpenBook(FFileName);
Xlsx1.SheetNo := 2;
APos := Xlsx1.Pos[1, 3, 1, 3];
APos.Double := VarToDateTime('2005/10/2 20:23:10');
APos.Attr.Format := 'yyyy年mm月dd日 hh時mm分ss秒';
APos.Attr.FontColor := xclBlack;
APos.Attr.BackColor := xclLightBlue;
except
//ブックや該当シートが存在しない場合等
end;
Xlsx1.CloseBook(True);
end;
//=============================================================================
// セルの値を取得
// Button1クリックで設定した値を取得
//=============================================================================
procedure TForm1.Button3Click(Sender: TObject);
begin
try
Xlsx1.OpenBook(FFileName);
Xlsx1.SheetNo := 2;
//数値として取得
Panel1.Caption := IntToStr(Xlsx1.Cell['A2', 0, 0].Int64);
//文字列として取得
Panel2.Caption := Xlsx1.Cell['A2', 0, 0].Str;
except
//ブックや該当シートが存在しない場合等
end;
Xlsx1.CloseBook(True);
end;
end.
|