问一个关于 delphi 操作word ,还有 olecontainer 内嵌 Word 的问题 :(

FlyDayDream 2005-05-17 12:34:57
1。问一个关于 delphi 操作word ,

var
oledoc,oleapp:variant;

oleapp:=createoleobject('word.applicaiton')

oledoc:=oleapp.openfile(filename);

我想知道,oledoc 能访问word 的 属性 ,以及能实现的功能,

如果不好说,有例子也可以,没有delphi,其它语言的也可以。

2。还有 olecontainer 内嵌 Word 的问题

a. oleContainer.loadfromFile()

b.oleContainer.loadfromstream()

我想知道 a 和 b 两种方法访问的word文档的属性及方法?

最主要的是实现 查找,替换,即可!

太多的话,可以概述,以及一些 支离代码都可以哦

谢谢!


flydaydream@163.com
...全文
434 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyguo 2005-05-17
  • 打赏
  • 举报
回复
打开word:
var wrd=new ActiveXObject("Word.Application")
加载模板:
wrd.Documents.Open("D:\\QianZY\\Document\\外贸\\单证模版\\汇票.dot")
得到书签:
var bm=wrd.ActiveDocument.Bookmarks
在特定书签处填入数据:
bm.Item("openingdate").Range.Text="<%=strTemp%>"
得到表格:
var ContractTable=wrd.ActiveDocument.tables(1)
在表格中填入数据:
ContractTable.Rows(1).Cells.Item(9).Range.InsertAfter("总体积 TOTAL MEANS (CBM)")
在表格中插入一行:
var newRow = ContractTable.Rows.Add(ContractTable.Rows(2))
在行中填入数据:
newRow.Cells.Item(1).Range.InsertAfter("<%=arrDetail[i][0]%>")
得到行数:
ContractTable.Rows.Count
lyguo 2005-05-17
  • 打赏
  • 举报
回复
以下是我找到的一段控制WORD文档的程序,谨供参考。希望能提供一些思路。更详细的情况
最好能去看一下Word的关于编程方面的帮助,应该是没有问题的。
procedure TForm1.Button1Click(Sender: TObject);
begin
WordApplication1.Connect;
WordApplication1.Visible := True;
visible:=true;
// wordapplication1.Documents.Add()
WordApplication1.Documents.Add(EmptyParam,EmptyParam);
WordDocument1.Connect;
WordApplication1.ActiveWindow.View.Type_:= wdNormalView;
WordApplication1.Selection.Font.Name :='黑体';
WordApplication1.Selection.Font.Size := 16;
WordApplication1.Selection.ParagraphFormat.Alignment := wdAlignParagraphCenter;
WordApplication1.Selection.TypeText('自定义表头内容');
WordApplication1.Selection.TypeParagraph;
WordApplication1.Selection.TypeParagraph;
WordApplication1.Selection.Font.Name := '宋体';
WordApplication1.Selection.Font.Size :=12;
WordApplication1.Selection.ParagraphFormat.Alignment := wdAlignParagraphRight;
WordApplication1.Selection.TypeText('日期'+formatdatetime('yyyy"年"mm"月"dd"日"',now));
WordApplication1.Selection.TypeParagraph;
WordApplication1.Selection.TypeParagraph;//回车
WordApplication1.Selection.ParagraphFormat.Alignment := wdAlignParagraphLeft;
end;
lyguo 2005-05-17
  • 打赏
  • 举报
回复
可以控制从数据库中取文字添加到Word模板中,可以操作word中的表。
可以向word贴图。
你应该在模板中设定标志字符,然后用系统来查找这些标志字符,然后从数据库中取数据进行替换。
可以多参看一下Office的在线帮助,多试一下吧。
先告诉你如何替换文字吧。注意:要uses Word97。procedure openwordfile(Myword:TWordApplication;Myfile:string);//打开Word文档函数。
//Myword:文档工程名称;Myfile:word文件名。
var
ItemIndex :OleVariant;
FileName, ConfirmConversions, ReadOnly, AddToRecentFiles,
PasswordDocument, PasswordTemplate, Revert,
WritePasswordDocument, WritePasswordTemplate, Format,
MatchCase,MatchWholeWord,find1,rep1,
MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
Wrap, Replace : OleVariant;
begin
Myword.Visible := false;
FileName :=MyFile;
confirmConversions := False;
ReadOnly := False;
AddToRecentFiles := False;
PasswordDocument := '';
PasswordTemplate := '';
Revert := True;
WritePasswordDocument := '';
WritePasswordTemplate := '';
Format := wdOpenFormatDocument;
myWord.Documents.Open( FileName, ConfirmConversions,
readOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate,
Revert, WritePasswordDocument, WritePasswordTemplate, Format );
myword.Visible:=false;
end;
//打开Word文档函数(结束)
Procedure RepData(MyDoc:TWordDocument;FindStr,RepStr:string);//利用数据库替换Word字符串函数
//FindStr:被查找的字符串。RepStr:要替换的字符串。
var
MatchCase,MatchWholeWord,find1,rep1,Format,
MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
Wrap, Replace : OleVariant;
begin
Find1:=FindStr;
Rep1:=RepStr;
MatchCase:=false;
MatchWholeWord:=true;
MatchWildcards:=false;
MatchSoundsLike:=false;
MatchAllWordForms:=false;
Format:=true;
Forward:=true;
replace:=wdReplaceall;
// WordApplication2.StartOfdocument; //到文首
{if} Mydoc.Range.Find.Execute( find1, MatchCase, MatchWholeWord,
MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
Wrap, Format, Rep1, Replace );{ then showmessage('OK!!!!')}
{else showmessage('finish!!');}
end;
以下是根据模板新建一个Doc文件。
FileName := Opendialog1.FileName;
itemindex:=1;
tempPlate:=Filename;
newtemplate:=false;
WordApplication1.Connect;
WordApplication1.Visible:=true;
WordApplication1.Documents.Add(TempPlate,newtemplate);
WordDocument1.ConnectTo(WordApplication1.Documents.Item(itemindex));
内容概要:本文针对网型T型三电平逆变器的低电压穿越(LVRT)能力及其综合控制策略开展深入研究,重点分析电网电压跌落条件下逆变器的动态响应特性与稳定性控制方法。研究基于Simulink平台构建详细的系统仿真模型,融合改进的电流环控制策略与中点电位平衡控制算法,有效提升逆变器在故障工况下的电流跟踪精度、过流抑制能力和直流侧中点电压稳定性。通过多场景仿真验证,所提出的综合控制策略能够显著增强逆变器在低电压穿越过程中的鲁棒性与电能质量,确保新能源系统在电网扰动下的持续可靠并网运行。; 适合人群:电力电子、新能源发电、电力系统自动化等相关专业的研究生、科研人员及从事并网逆变器设计与控制的工程技术人员。; 使用场景及目标:①深入理解三电平逆变器在电网故障下的运行机理与控制挑战;②掌握低电压穿越技术中电流限幅、故障响应及中点电位平衡的核心控制方法;③应用于光伏、风电等新能源并网系统的控制策略开发与仿真验证; 阅读建议:建议结合提供的Simulink仿真模型进行动手实践,重点关注控制器参数设计、中点电位观测与调节模块的实现逻辑,并通过对比不同电压跌落深度和控制策略的仿真结果,深化对系统动态行为与控制性能的理解。

5,943

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧