Excel4Delphiを使ってエクセル無しでエクセルファイルを読み書き(VCL)
DelphiでExcelファイル(.xlsx)を読み書きしたいけれど、Microsoft Excelがインストールされていない環境でも動かしたい──そんな時に便利なのが「Excel4Delphi」です。
このページでは、Excel4Delphiを使ってVCLアプリケーションから.xlsxファイルを作成・読み込みする方法を、**実用的なサンプルコード付き**で詳しく解説します。
セルの値の設定、数式の記述、印刷設定、フォント変更など、業務でも使えるレベルのExcel操作が可能です。Delphiユーザー必見のライブラリです。
但しフォント名は保存すると「Arial」で固定されているようです。色やサイズなどは変更できるようです。
また、読み書きできるのは .xlsx のみのようです。
しかしながら、エクセル無しでエクセルファイルを読み書きできるのは素晴らしいです。
https://github.com/rareMaxim/Excel4Delphi
の[Code]⇒[Download ZIP]からダウンロードします。
Excel4Delphi-master.zipを解凍して
C:\Users\Public\Documents\Embarcadero\Studio\lib\Excel4Delphi-master
など任意のディレクトリに解凍したファイルをコピーします。
Delphiを起動して[ツール]⇒[オプション]でオプションのウィンドウを開き、
「ライブラリ」のライブラリパスに、先ほどのディレクトリ\source
(例)C:\Users\Public\Documents\Embarcadero\Studio\lib\Excel4Delphi-master\source
を追加します。
次に[ファイル]⇒[開く]から、先ほどのディレクトリ\packages\Excel4DelphiLib.dproj ファイルを開きます。
(例)C:\Users\Public\Documents\Embarcadero\Studio\lib\Excel4Delphi-master\packages\Excel4DelphiLib.dproj
ちなみにここで Excel4Delphi.pas の2866行目と、 Excel4Delphi.Stream.pas の2824行目の 'Arial' を 'MS ゴシック' などに変更するとデフォルトのフォントを変えることが出来るようです。
右上ペインの[プロジェクト マネージャ]の「Excel4DelphiLib.bpl」を右クリックして[インストール]をクリックすると、インストールが完了します。
[ファイル]⇒[すべて閉じる]をクリックし、「保存しますか?」で[はい]を選択肢て閉じます。
プロジェクトの作成
Delphi IDEから、「ファイル」⇒「Windows VCLアプリケーション -Delphi」をクリックします。
ツールパレットからTButtonをForm1にドラッグ&ドロップします。
ソースコードの記述
Button1をダブルクリックして Button1.OnClick のソースコードを記述します。
uses Excel4Delphi, Excel4Delphi.Stream;
procedure TForm1.Button1Click(Sender: TObject);
var
WB: TZWorkBook;
WS: TZSheet;
begin
WB := TZWorkBook.Create(nil);
try
WB.Sheets.Add('Sheet1');
WS:=WB.Sheets[0];
WS.DefaultColWidth:=200;
WS.ColCount := 10;
WS.RowCount := 10;
WS.Range[0,0, 9,9].FontSize:=12;
//用紙サイズをA5
WS.SheetOptions.PaperSize:=DMPAPER_A5;
//印刷時に横向き
WS.SheetOptions.PortraitOrientation:=False;
WS.CellRef['A',0].AsString:='本と値段';
WS.RangeRef['A',0, 'B',0].Merge();
WS.CellRef['A',1].AsString := '本';
WS.CellRef['B',1].AsString := '値段';
//WS.CellRef['A',1].Style:=Style;
WS.RangeRef['B',2, 'B',4].NumberFormat:='#,##0';
WS.Cell[0,2].AsString:='凄い本';
WS.Cell[1,2].AsInteger:=1100;
WS.Cell[0,3].AsString:='ちょっとした本';
WS.Cell[1,3].AsInteger:=2200;
WS.Cell[0,4].AsString:='合計';
WS.Cell[1,4].Formula:='=SUM(B3:B4)';
WB.SaveToFile('file.xlsx');
finally
WB.Free();
end;
end;
実行する
実行してButton1をクリックすると、file.xlsxファイルが生成されます。
ファイルから読む
既存のファイルをロードしてセルの値を読むことも出来るようです。
procedure TForm1.Button2Click(Sender: TObject);
var
WB: TZWorkBook;
begin
WB := TZWorkBook.Create(nil);
WB.LoadFromFile('file.xlsx');
try
ShowMessage(
IntToStr(
WB.Sheets[0].Cell[1,2].AsInteger+
WB.Sheets[0].Cell[1,3].AsInteger
)
);
finally
WB.Free;
end;
end;
