Excel4Delphiを使ってエクセル無しでエクセルファイルを読み書き(VCL)
Excel4Delphiを使うとマイクロソフト社Excelがインストールされていなくてもファイルを作ったり読み込んだりできます。
但しフォント名は保存すると「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;