当前位置:首页 > 技术知识 > 正文内容

lazarus(free pascal) 操控wps或Excel

maynowei5个月前 (10-19)技术知识81

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.



相关文章

IT博物馆之Objective-C诞生(micro博物馆)

1984年,Objective-C诞生。设计者:布莱德·考克斯(Brad Cox)、汤姆·洛夫(Tom Love)Objective-C是面向对象的通用、高级编程语言。它扩展了标准的 ANSI C,将...

Win10桌面/手机版最深层次开发功能挖掘

IT之家讯 Win10开发者预览版为我们提供了一个Win10大框架的早期概览,使开发者与热心用户都可以提前感受Win10带来的新特性,尝试新工具,而作为开发者,最关心的莫过于Windows多平台通用应...

CPU「离奇」飙到 100%!开发者挖出 Linux 内核 16 年老 Bug:这么多年竟无人发现?

【CSDN 编者按】每一次对旧设备的升级都仿佛是一场跨越时代的冒险。本文作者致力于将基于 PXA166 的 Chumby 8 设备从 Linux 2.6.28 版本升级到现代 6.x 版本,然而,在看...

分析 Rust 程序的火焰图(rust火吗)

分析 Rust 程序的火焰图(Flame Graph)是定位性能瓶颈的核心手段,其核心是通过可视化的函数调用栈和时间分布,找到 CPU 耗时、内存分配、锁竞争等热点。以下是详细的分析方法和步骤,结合...

C++ 原子操作与锁的深度解析:为什么原子操作并非万金油?

大噶好,我是henry,今天来和大家浅浅聊一下为啥C++原子操作并非万能钥匙,原因有三,且听我娓娓道来:一、原子操作的线程安全性C++11 的 std::atomic 确实为单个变量的线程安全操作提供...

LabVIEW实现Oracle数据库的访问(labview数据库查询界面)

1. 安装 Oracle 客户端下载:从 Oracle 官方网站下载适用于 Windows 操作系统的 Oracle 驱动程序。确保下载的版本与 LabVIEW 环境和操作系统兼容。1)以 Windo...