高手问五我想在Delphi程序中直接调用Word文档并使用Wor
方法一:1)从WORD.EXE中导入WORD的TypeLibrary2)varwd:_Application; , :='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;方法二: :Variant; //方法二的参数可以直接使用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控件名称。 :Variant;o:OleVariant;begino:='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编程帮助。
delphi读取WORD文档每一页的内容
uses ComObj,WordXp;var wordapp, WordDoc, PageRange: Variant; sContext: string; i, nPageCounts, nStart, nEnd : Integer;begin wordapp := CreateOleObject('Word.Application'); try wordapp.Visible := True; if dlgOpen1.Execute = False then Exit; WordDoc := wordapp.Documents.Open(dlgOPen1.FileName); //文档总页数 nPageCounts := wordapp.Selection.Information[wdNumberOfPagesInDocument]; //如果只有一页 那么全选就OK了 if nPageCounts = 1 then begin wordapp.Selection.WholeStory; mmo1.Lines.Add('=============第'+IntToStr(nPageCounts)+'页内容:==================='); mmo1.Lines.Add(wordapp.Selection.Text); Exit; end; nStart := -1; nEnd := -1; //循环获取文档页中的内容 for i := 1 to nPageCounts do begin //定位到第i页 PageRange := wordapp.Selection.GoTo(wdGoToPage, wdGoToNext, IntToStr(i)); //如果第i页是最后一页 那么直接将光标移动到最后 并输出内容 if i = nPageCounts then begin wordapp.Selection.EndKey(wdStory,wdExtend); sContext := WordApp.Selection.Range.Text; mmo1.Lines.Add('=============第'+IntToStr(i)+'页内容:==================='); mmo1.Lines.Add(sContext); Exit; end; //取第i页的页首位置作为开始位置 nStart := wordapp.Selection.Start; //定位到i+1页 PageRange := wordapp.Selection.GoTo(wdGoToPage, wdGoToNext, IntToStr(i+1)); //取第i+1页的页首位置作为结束位置 nEnd := wordapp.Selection.Start; //根据开始位置和结束位置确定文档选中的内容(第i页的内容) WordDoc.Range(nStart,nEnd).Select; sContext := WordDoc.Range.Text; //输出内容 mmo1.Lines.Add('=============第'+IntToStr(i)+'页内容:==================='); mmo1.Lines.Add(sContext); nStart := -1; nEnd := -1; end; finally wordapp.Quit; end;end;昨天没有测试好 这个应该没有问题了吧 试一下吧。
怎么样在 Delphi 中打开一个word文件
delphi 调用 word 打开一个文档,兼容性比较好的办法,是使用 oleObject 来调用本机安装的 word,示例代码如下:procedure TForm1.Button1Click(Sender: TObject);var MSWord: Variant;begin MSWord := CreateOLEObject('Word.Application');//连接Word MSWord.Documents.Open(FileName:='D:\Temp\temp.doc', ReadOnly:=True); //打开外部Word文档 MSWord.Visible := 1;//是否显示文件编辑 MSWord.ActiveDocument.Range(Start:=0, End:=0);//开始改变的启止位置 MSWord.ActiveDocument.Range.InsertAfter(Text:='myvc');//在Word中增加字符'myvc' MSWord.ActiveDocument.Range.InsertParagraphAfter; MSWord.ActiveDocument.Range.Font.Size := 72;//字体大小 MSWord.ActiveDocument.Range.Font.Name := 'Arial';//字体名称。
转载请注明出处51数据库 » delphi中worddocument
达?矢抾哆拉?