如何在 Delphi 中使用 Word 和 Excel?

How work with Word and Excel in Delphi?

我在 Windows 10 64 位上使用 Delphi X10 和 Word 2016 64 位。 我一直使用 ComObj。 例如:

uses ComObj;


procedure TForm1.RzBitBtn1Click(Sender: TObject);
var Excel: variant;  i, j: word;
begin
  Excel := CreateOleObject('Excel.Application');
  Excel.Workbooks.Open('file.xls');
  for i := 1 to 5 do
  for j := 1 to 5 do
  StringGrid1.Cells[j, i] := Excel.Sheets[1].Cells[i, j].Text;
end;

但是,我想对 Excel 方法使用自动完成。我阅读了我应该导入类型库的内容,但我无法在我的系统中找到类型库文件。

这很容易做到,只要 Excel 和 Word 的类型库正确注册即可。

转到 Delphi 安装下的 OCX\Servers 文件夹并找到 Word2010.Pas。将它添加到一个新的 VCL 项目中,并在主窗体的单元中使用它。在主窗体上声明一个窗体变量 A: WordApplication

完成后,您应该可以转到 Form1 的 Form.Create,键入

A.

自动完成应该为您提供 WordApplication 的方法和属性的可能性。

现在,打开 Word2010.Pas 并找到部分

// File generated on 2/20/2013 5:56:45 PM from Type Library described below.

// ************************************************************************  //
// Type Lib: c:\Program Files\Microsoft Office\Office14\msword.olb (1)
// LIBID: {00020905-0000-0000-C000-000000000046}

这会告诉您用于生成 Word2010.Pas 的类型库的名称和位置。

现在,除非您需要使用一些自 2010 版本以来添加到 Word/Excel 的 method/property,否则 Word2010.Pas 和 Excel2010.Pas 可能就是您所需要的。但是,您可以使用 Delphi 导入更新版本的类型库,并让它为其生成一个导入单元。具体如何操作取决于您的 Delphi 版本,但适用于 Delphi 西雅图。您只需转到 Component |从 IDE 主菜单导入组件,然后在弹出窗口中 select Import type library 并按照向导的提示进行操作。

生成导入单元后,显然您只需在项目中使用它而不是 MSWord2010。

顺便说一句,严格来说,没有"Delphi X10",最近的版本(从XE8开始)是西雅图,柏林和东京。