从Delphi打开并编辑Word模板
发布时间:2020-12-15 09:36:36 所属栏目:大数据 来源:网络整理
导读:我需要能够从Delphi打开和编辑Word模板(使用Word) 我可以打开模板确定,但Word假定它是一个文档而不是模板. 问题是我需要编辑模板而不是将其用作新文档的模板. 我使用模板作为文档处理系统的一部分,我希望用户能够从我的应用程序编辑模板.因为现在他们必须打
我需要能够从Delphi打开和编辑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('pathtomytemplate.dotx'); Doc.Range.Text := 'Merry Christmas everyone'; Doc.Save; WordApp.Quit; end; 我使用了后期绑定,因为我发现这个例子更容易.但是你应该坚持早期的约束方法.您必须导航open方法需要加载参数的事实.我想你可以简单地将EmptyParam传递给除第一个参数之外的所有参数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |