DC娱乐网

Delphi操作Excel数据

之前的文章有介绍如何使用C#读取WPS文件。今天讲讲如何在Delphi中读取WPS。

获取WPS逻辑

Delphi中操作WPS,可以使用OLE对象提供的方法,GetActiveOleObject用于获取打开的OLE对象,CreateOleObject则用于新建OLE对象。如果当前OLE存在,则使用GetActiveOleObject获取,否则使用CreateOleObject新建。

界面设计

时间仓促,界面设计很简单,只有一个按钮。

效果展示


实现代码

unit wps_app;interfaceuses  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ComObj;type  TForm1 = class(TForm)    Test: TButton;    procedure TestClick(Sender: TObject);    function GetOrCreateExcel:Variant;  private    { Private declarations }  public    { Public declarations }  end;var  Form1: TForm1;implementation{$R *.dfm}// 获取当前打开的Excel。// 如果没有打开的,就新建Excel。function TForm1.GetOrCreateExcel: Variant;var  wps : Variant;begin    try      wps := GetActiveOleObject('Excel.Application'); // get current    except      on ex: Exception do        wps := CreateOleObject('Excel.Application');  // create new    end;    wps.Visible := True;    Result := wps;end;procedure TForm1.TestClick(Sender: TObject);var  wps, wb, sht: Variant;  I: Integer;begin  try    wps := GetOrCreateExcel;    if wps.Workbooks.Count = 0 then      wps.Workbooks.Add;    wb := wps.Workbooks[1];    sht := wb.Worksheets[1];    sht.Range['A1'] := 'Time';    sht.Range['B1'] := 'ID';    for I := 2 to 10 do    begin      sht.Cells[I,1] := FormatDateTime('yyyy-MM-dd HH:nn:ss', Now);      sht.Cells[I,2] := I-1;    end;  finally    wps := unassigned;  end;end;end.