gpt4 book ai didi

delphi - 从 Delphi 打开并编辑 Word 模板

转载 作者:行者123 更新时间:2023-12-03 15:20:10 25 4
gpt4 key购买 nike

我需要能够从 Delphi 打开并编辑 Word 模板(使用 Word)我可以正常打开模板,但 Word 认为它是文档而不是模板。

问题是我需要编辑模板而不是将其用作新文档的模板。我使用模板作为文档处理系统的一部分,我希望用户能够从我的应用程序编辑模板。现在他们必须打开 Word,然后从那里打开模板并进行编辑 - 从我的应用程序中执行此操作会更容易、更安全。

实验代码

fWordApp: WordApplication;
TempName: OleVariant;
WordDoc: WordDocument;
TemplateFile: string;
begin
TemplateFile := Settings.Directories.RootInsert(qryTemplates.FieldByName('fldtemplate_path').AsString);
if TemplateFile <> '' then
begin
if not Assigned(fWordApp) then
begin
fWordApp := CreateOleObject('Word.Application') as WordApplication;
while fWordApp.Templates.Count = 0 do
Sleep(200); // Normal.dot must be loaded
end;
if Assigned(fWordApp) then
fWordApp.Visible := True
else
raise Exception.Create('Cannot initialize Word application');
TempName := TemplateFile;
WordDoc := fWordApp.Documents.Add(TempName, EmptyParam, wdFormatTemplate, EmptyParam);

最佳答案

据我了解,您使用了错误的方法。 Add 方法用于创建新文档。您可以传递模板文件名以使新文档基于该模板。

但是您想要打开现有文档并对其进行编辑。该文档是模板并不重要。您仍然需要打开它。为此,您需要 Open 方法。这是一个相当简单的例子。

var
WordApp, Doc: Variant;
begin
WordApp := CreateOleObject('Word.Application');
WordApp.Visible := True;
Doc := WordApp.Documents.Open('path\to\my\template.dotx');
Doc.Range.Text := 'Merry Christmas everyone';
Doc.Save;
WordApp.Quit;
end;

我使用了后期绑定(bind),因为我发现这个示例更容易。但您应该坚持早期的绑定(bind)方法。您必须了解 open 方法需要大量参数的事实。我认为您可以简单地将 EmptyParam 传递给除第一个参数之外的所有参数。

关于delphi - 从 Delphi 打开并编辑 Word 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14009866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com