怎么样在 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';//字体名称...
如何用delphi调用word打开一个文档
使用函数 ShellExecutefunction ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall;必须引用shellapi.pas单元:uses ShellAPI;begin...ShellExecute(Handle,'open','winword','D:\test.doc','',SW_SHOWNORMAL); // winword 报错就写成 word...end;
delphi读取WORD文档每一页的内容
我来第一段,取得文档中的段落数function GetParagraphsCount(docFileName:string):integer;var Word : Variant;beginresult:=0;tryWord := CreateOLEObject('Word.Application');Word.Documents.Open(docFileName,false);result:=Word.ActiveDocument.Range.Paragraphs.Count;finallyWord.Quit;end;end;//打开文档procedure TForm1.OpenWord(Sfile: string);var FileName, ConfirmConversions, ReadOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate, Revert, WritePasswordDocument, WritePasswordTemplate, Format, Encoding, Visible, OpenAndRepair, DocumentDirection, NoEncodingDialog: OleVariant; ItemIndex: OleVariant;begin FileName := sfile; ConfirmConversions := False; ReadOnly := False; AddToRecentFiles := False; PasswordDocument := ''; PasswordTemplate := ''; Revert := True; WritePasswordDocument := ''; WritePasswordTemplate := ''; Format := wdOpenFormatDocument; //打开文件 WordApplication1.Documents.Open(FileName, ConfirmConversions, ReadOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate, Revert, WritePasswordDocument, WritePasswordTemplate, Format, Encoding, Visible, OpenAndRepair, DocumentDirection, NoEncodingDialog); ItemIndex := 1; WordDocument1.ConnectTo(WordApplication1.Documents.Item(ItemIndex)); WordApplication1.Options.CheckSpellingAsYouType := False; WordApplication1.Options.CheckGrammarAsYouType := False; WordApplication1.Connect; WordApplication1.Visible := True; WordApplication1.Disconnect;end;//设置页眉页脚procedure TForm1.Button5Click(Sender: TObject);var mmm, nnn, aaa: OleVariant;begin mmm := wdLine; nnn := 1; aaa := wdFieldPage; worddocument1.ActiveWindow.ActivePane.View.SeekView := wdSeekCurrentPageHeader; worddocument1.activewindow.Selection.Move(mmm, nnn); worddocument1.activewindow.Selection.ParagraphFormat.Alignment := wdAlignParagraphCenter; worddocument1.activewindow.Selection.InsertAfter('第'); mmm := wdCharacter; worddocument1.activewindow.Selection.Move(mmm, nnn); worddocument1.activewindow.Selection.Fields.Add(worddocument1.activewindow.Selection.Range, aaa, mmm, nnn); aaa := wdFieldNumPages; worddocument1.activewindow.Selection.InsertAfter('页/第'); worddocument1.activewindow.Selection.Move(mmm, nnn); worddocument1.activewindow.Selection.Fields.Add(worddocument1.activewindow.Selection.Range, aaa, mmm, nnn); worddocument1.activewindow.Selection.InsertAfter('页');mmm := wdWord; nnn := 2; worddocument1.activewindow.Selection.Move(mmm, nnn); worddocument1.activewindow.activepane.selection.insertafter(#13+'武汉大学中南医院'); //结束编辑 worddocument1.ActiveWindow.ActivePane.View.SeekView := wdSeekMainDocument;end;//替换页眉procedure TForm1.Button6Click(Sender: TObject);var FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace, MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl:olevariant; i:Single;begin matchcase := false; matchwholeword := true; matchwildcards := false; matchsoundslike := false; matchallwordforms := false; forward := true; wrap := wdfindcontinue; format := false; replace := true; MatchKashida:=True; MatchDiacritics:=True; MatchAlefHamza:=True; MatchControl:=True; findtext := '武汉'; //'' replacewith := '1234'; worddocument1.ActiveWindow.ActivePane.View.SeekView := wdSeekCurrentPageHeader; worddocument1.activewindow.activepane.selection.Find.Execute(Findtext, matchcase, matchwholeword, matchwildcards, matchsoundslike, matchallwordforms, forward, wrap, format, replacewith, replace,MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl); //结束编辑 worddocument1.ActiveWindow.ActivePane.View.SeekView := wdSeekMainDocument;end; 还有很多 提交不上来.... 展开
在delphi中,如何打开事先做好的WORD文档(已经完成的数据连接...
用 delphi 调用 word ,通常是使用 OleCreateObject 函数,来启动 word 程序,如:CreateOleObject('Word.Application')此外,如果不需要考虑 word 控制等,只是单纯的启动 word,可以使用 ShellExecute 或是 WinExec 等函数启动程序。
如果 word 不能启动,建议检查:1、 word 软件的安装情况,比如某些精简安装版的 word 可能由于注册表中某些登记不完整,会导致出错;运行的电脑系统中 word 是否能正确运行等等。
2、调用 word 的命令是否有误。
如何用delphi调用word打开一个文档
使用函数 ShellExecutefunction ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall;必须引用shellapi.pas单元:uses ShellAPI;begin...ShellExecute(Handle,'open','winword','D:\test.doc','',SW_SHOWNORMAL); // winword 报错就写成 word...end;...
delphi打开文件的各种方法?
第一种方法,使用SelectDirectory 函数 ,在ShellApi中 procedure TForm2.BtSelectPathClick(Sender: TObject);var strCaption,strDirectory:String; wstrRoot:WideString; begin strCaption:='这是浏览文件夹的说明文字,可以根据需要进行书写。
' +#13#10+'一般二行文字就满了。
'; //该参数是浏览文件夹窗口的显示说明部分 wstrRoot:=''; //这个参数表示所显示的浏览文件夹窗口中的根目录,默认或空表示“我的电脑”。
SelectDirectory(strCaption,wstrRoot,strDirectory); EdLocalPath.Text:=strDirectory;end; 第二种方法 要求:利用Win32 API SHBrowseForFolder开启一个选择文件目录的对话框,预先定位到默认的目录,最后返回所选择的结果,如果没有进行选择(即单击“取消”结束选择)则返回空''。
代码如下:(以下两个函数定义需要在uses中引入两个单元ShlObj,Windows;)function BrowseCallbackProc(Wnd: HWND; uMsg: UINT; lParam, lpData: LPARAM): Integer stdcall;begincase uMsg of BFFM_INITIALIZED: SendMessage(Wnd, BFFM_SETSELECTION, 1, lpData);end;Result := 0;end; function BrowsFolder(const Folder: string): string;varTitleName: string;lpItemID: PItemIDList;BrowseInfo: TBrowseInfo;DisplayName: array[0..MAX_PATH] of char;TempPath: array[0..MAX_PATH] of char;beginResult := Folder;FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);BrowseInfo.hwndOwner := GetActiveWindow;BrowseInfo.pszDisplayName := @DisplayName;TitleName := '请选择一个目录';BrowseInfo.lpszTitle := PChar(TitleName);BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;BrowseInfo.lpfn := BrowseCallbackProc;BrowseInfo.lParam := Integer(PChar(Folder));lpItemID := SHBrowseForFolder(BrowseInfo);if Assigned(lpItemId) thenbegin SHGetPathFromIDList(lpItemID, TempPath); GlobalFreePtr(lpItemID); Result := string(TempPath);endelse Result:='';end; 函数BrowsFolder是主体,传入参数即默认的目录,返回值即选择的结果。
BrowseCallbackProc是由SHBrowseForFolder执行时需要的回调(Call Back)函数。
在这个函数中,截取了BFFM_INITIALIZED消息,在目录选择对话框初始化的时候,向对话框发送一个BFFM_SETSELECTION消息,选中默认的目录。
delphi中把查询出来的数据导入word中?
我将我的商用《旅行社管理系统》的 发团通知 部分奉献给您,望对您有所帮助。
procedure TFrmMain.N327Click(Sender: TObject); var FWord :Variant; FDoc :Variant; strSQL :string; begin //首先创造对象,如果出现异常就做出提示 try FWord := CreateOleObject('Word.Application'); //WOrd程序的执行是否可见,值为false时,程序在后台运行。
FWord.Visible := True; except messagebox(0,'创建word对象失败!','警告',MB_OK+MB_ICONINFORMATION); exit; end; strSQL :='select * From "B_T_Company_Infor"'; with dm.ClientDataSet_Temp do begin if Active then Active:=False; CommandText:=strSQL; Open; end; //现在打开的Word中,创建一个新的页面,然后在其中键入需要的内容 try FDOC :=FWord.Documents.Add; {对于Word的新页面} FWord.Selection.Font.Name :='宋体'; FWord.Selection.Font.Size :=20; FWord.Selection.Font.Bold :=2; FWord.Selection.paragraphs.Alignment := wdAlignParagraphCenter; FWord.Selection.TypeText(dm.ClientDataSet_Temp.Fields[0].AsString); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph; FWord.Selection.paragraphs.Alignment := wdAlignParagraphLeft; FWord.Selection.Font.Size :=12; FWord.Selection.Font.Bold :=0; FWord.Selection.TypeText(' 现将我社组团部的'); FWord.Selection.TypeText(' '); FWord.Selection.TypeText('团计划发出,各地请按下列行程做接待,并及早落实'+ '团队计划和选派优秀导游员。
各地代订住宿、火车票、机票务必安排好接待,日程'+ '如有变更,及时与下站接待社或本社联系,各地接团时请举【'+ dm.ClientDataSet_Temp.Fields[0].AsString+'】接站牌。
'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('请速回传真确认,谢谢合作!'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('人数:'); FWord.Selection.TypeText('人数:'); FWord.Selection.TypeText('国籍:'); FWord.Selection.TypeText('国籍:'); FWord.Selection.TypeText('等级:'); FWord.Selection.TypeText('等级:'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('这里是团队安排'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('TO: '); FWord.Selection.TypeText('12345678901234567890'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('TEL: '); FWord.Selection.TypeText('12345678901234567890'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('FAX: '); FWord.Selection.TypeText('12345678901234567890'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('______________________________________________'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('FROM: '); FWord.Selection.TypeText(dm.ClientDataSet_Temp.Fields[0].AsString); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('TEL: '); FWord.Selection.TypeText(dm.ClientDataSet_Temp.Fields[3].AsString); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('FAX: '); FWord.Selection.TypeText(dm.ClientDataSet_Temp.Fields[4].AsString); FWord.Selection.Typeparagraph;//换行 Except on e: Exception do Messagebox(0,Pchar(e.Message),'警告',MB_OK+MB_ICONINFORMATION); end; //保存文档 FWord.Caption := '组团计划保存在: '+ExtractFilePath(application.ExeName)+'Reports\GroupPlan.doc'; FDOC.SaveAS(ExtractFilePath(application.ExeName)+'Reports\GroupPlan.doc'); if messagebox(0,'组团计划已经保存成功!'+chr(13)+chr(13)+ '单击【确定】退出Word,返回到程序中!','您确信要退出Word吗?', MB_YESNO+MB_ICONINFORMATION+MB_DEFBUTTON2)=IDYES then begin FWord.Quit; FWord := Unassigned; end; end; ----------------------------- Delphi与Word之间的融合技术(1) 一、VBA代码含义 Microsoft Word是一个集成化环境,是美国微软公司的字处理系统,但是它决不仅仅是一个字处理系统,它集成了Microsoft Visual Basic,可以通过编程来实现对Word功能的扩展。
Microsoft Visual Basic在word中的代码即Word的宏,通过编写Word宏,可实现一些文档处理的自动化,如实现文档的自动备份、存盘等,可扩展Word文档的功能,因此,能够充分利用Word的特性,甚至使Word成为自己软件的一部分。
Word的宏既有有利的一部分,因为它能够帮助我们实现文档的自动化,但是Word的宏也不是纯粹的有利,有时它可能危害我们的文档、计算机系统甚 至网络,从最开始的Taiwan NO1宏病毒到现在的...
在DELPHI 中使用 word 文档
这个问题难不住我~1.首先你可以使用ole 调用word ,将word内容在delphi界面显示出来。
2.然后利用word本身的‘宏’命令。
选择‘录制新宏’。
3.在宏录制状态下做你想做的操作(将字段插入word中你想要的任何地方)。
操作完毕后选择停止录制。
4.打开刚刚录制的‘宏’。
选择编辑,把VBA命令转换为delphi代码。
(其实你应该去大富翁看看,那里有很多答案)
转载请注明出处51数据库 » delphi打开word
妖誩惑衆