lazarus(free pascal) 操控wps或Excel
excel或wps自动化程序用什么语言都能实现,用lazarus的优点是容易分发,lazarus编译出来只有一个exe文件,并且相对于易语言和aardio等更不容易报毒。python和C#编写的程序同样不好分发,需要带上一堆东西,那些语言做出来的程序要么需要自己安装依赖,要么就需要带上庞大的安装包,对于电脑小白安装东西是很费劲的事。
直接上个最小的框架代码:
uses
ComObj, Variants;
var
ExcelApp: Variant;
begin
try
ExcelApp :=CreateOleObject('Excel.Application');
//ExcelApp := CreateOleObject('Ket.Application');
ExcelApp.Visible:= True;
ExcelApp.Workbooks.Add;
ExcelApp.Cells[1,1].Value:='zzzzz';
finally
if VarIsEmpty(ExcelApp)=False then ExcelApp.Quit;
end;
end.1、users ComObj
pascal操作windows COM组件需要ComObj库,所以程序开头引入。
2、ExcelApp := CreateOleObject('Excel.Application');
创建Com对象,如果系统中有office,会创建window office对象,如果没有office,有wps会创建wps对象。万一创建失败,但系统中有wps,那就把'Excel.Application'换成’Ket.Application'吧。
然后就可以对excel对象进行各种操作了。具体有哪些函数和功能参考excel VBA教程。
3、ExcelApp.Quit;
最后,别忘了关闭excel对象,不关闭对象,excel会一直在后台运行。
如果你需要经常编写这样的程序,那么把Excel相关函数封装到接口或类中可能更方便一些:
unit Excel_TLB;
interface
uses
Windows, ActiveX, Classes, Variants;
const
ExcelAppGUID: TGUID = '{000208D5-0000-0000-C000-000000000046}';
type
IExcelApplication = interface(IDispatch)
['{000208D5-0000-0000-C000-000000000046}']
function GetVisible: WordBool; safecall;
procedure SetVisible(Value: WordBool); safecall;
procedure Quit; safecall;
function Workbooks: Variant; safecall;
end;
implementation
end.使用时导入接口文件即可:
program ExcelTest;
uses
ComObj, Excel_TLB;
var
ExcelApp: IExcelApplication;
begin
ExcelApp := CreateOleObject('Excel.Application') as IExcelApplication;
ExcelApp.Visible := True;
ExcelApp.Workbooks.Add;
ExcelApp.Cells[1, 1].Value := 'Hello, Excel!';
ExcelApp.Quit;
end.