我想在 Delphi 程序中直接调用 Word 文档并使用 Word 的功能,这个程序该怎样编? 该用什么控件呢?
1个回答
2013-11-25
展开全部
方法一:
1) 从 WORD.EXE 中导入 WORD 的 Type Library
2) var wd : _Application;
wdt : Table;
dot1,FileName: OleVariant;
begin
dot1 := 'c:\abc.dot';
wd := coApplication_.Create;
wd.Documents.Add(dot1, EmptyParam);
wdt := wd.ActiveDocument.Tables.Item(1);
wdt.Cell(1,3).Range.Text := 'Hello!';
//以下是保存和关闭文档及 Word, 可以不关,下面两个例程略过此步。
//EmptyParam 用来代替不使用的参数。
FileName := 'c:\test.doc';
wd.ActiveDocument.SaveAs(FileName,EmptyParam,EmptyParam,
EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,
EmptyParam);
wd.ActiveDocument.Close(EmptyParam,EmptyParam,EmptyParam);
wd.Quit(EmptyParam,EmptyParam,EmptyParam);
end;
方法二:
var
Ole: Variant;
NewDoc: Variant;
DocTable: Variant;
begin
//方法二的参数可以直接使用 Delphi 的数据类型。其它方法只能使用 OleVariant 类型.
Ole := CreateOleObject('Word.Application');
Ole.Application.Visible := true;
NewDoc := Ole.Documents.Add('C:\abc.dot');
DocTable := NewDoc.Tables.Item(1);
DocTable.Cell(1,3).Range.Text := 'Hello!';
//设置Variant对象为UnAssigned来释放该对象的引用。
NewDoc := UnAssigned;
DocTable := UnAssigned;
Ole := UnAssigned;
end;
方法三:使用 Server 页的 TWordApplication 控件,同理,你可以用里头的所有控件。Ole 为TWordApplication控件名称。
var
NewDoc: Variant;
DocTable: Variant;
o: OleVariant;
begin
o := 'c:\abc.dot';
NewDoc := Ole.Documents.Add(o,EmptyParam);
DocTable := NewDoc.Tables.Item(1);
DocTable.Cell(1,3).Range.Text := 'Hello!';
NewDoc := UnAssigned;
DocTable := UnAssigned;
end;
推荐用方法一和方法三。因为方法二不提供类型参数检查,也因为方法二的接口调用效率低。程序中所使用的属性和方法资料可以在 Office 的 VBA 帮助中查到。需要者请在安装 Office 时选择安装 VBA 编程帮助。
1) 从 WORD.EXE 中导入 WORD 的 Type Library
2) var wd : _Application;
wdt : Table;
dot1,FileName: OleVariant;
begin
dot1 := 'c:\abc.dot';
wd := coApplication_.Create;
wd.Documents.Add(dot1, EmptyParam);
wdt := wd.ActiveDocument.Tables.Item(1);
wdt.Cell(1,3).Range.Text := 'Hello!';
//以下是保存和关闭文档及 Word, 可以不关,下面两个例程略过此步。
//EmptyParam 用来代替不使用的参数。
FileName := 'c:\test.doc';
wd.ActiveDocument.SaveAs(FileName,EmptyParam,EmptyParam,
EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,
EmptyParam);
wd.ActiveDocument.Close(EmptyParam,EmptyParam,EmptyParam);
wd.Quit(EmptyParam,EmptyParam,EmptyParam);
end;
方法二:
var
Ole: Variant;
NewDoc: Variant;
DocTable: Variant;
begin
//方法二的参数可以直接使用 Delphi 的数据类型。其它方法只能使用 OleVariant 类型.
Ole := CreateOleObject('Word.Application');
Ole.Application.Visible := true;
NewDoc := Ole.Documents.Add('C:\abc.dot');
DocTable := NewDoc.Tables.Item(1);
DocTable.Cell(1,3).Range.Text := 'Hello!';
//设置Variant对象为UnAssigned来释放该对象的引用。
NewDoc := UnAssigned;
DocTable := UnAssigned;
Ole := UnAssigned;
end;
方法三:使用 Server 页的 TWordApplication 控件,同理,你可以用里头的所有控件。Ole 为TWordApplication控件名称。
var
NewDoc: Variant;
DocTable: Variant;
o: OleVariant;
begin
o := 'c:\abc.dot';
NewDoc := Ole.Documents.Add(o,EmptyParam);
DocTable := NewDoc.Tables.Item(1);
DocTable.Cell(1,3).Range.Text := 'Hello!';
NewDoc := UnAssigned;
DocTable := UnAssigned;
end;
推荐用方法一和方法三。因为方法二不提供类型参数检查,也因为方法二的接口调用效率低。程序中所使用的属性和方法资料可以在 Office 的 VBA 帮助中查到。需要者请在安装 Office 时选择安装 VBA 编程帮助。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询