Delphi操作Word,Excel替换

来源:互联网 发布:北京java培训费用 编辑:程序博客网 时间:2024/05/16 13:47

有的时候想把数据库里的内容按某种格式写在Word,Excel里,在Word,Excel里按某种格式保存字段名称,下面以“%+字段名称+%"为例


一、Delphi 操作 Word 替换

<pre name="code" class="delphi">procedure ReplaceWordCharacters(WordDoc: Variant; SearchSrc, RplDest: string);begin  WordDoc.Activate;  WordDoc.Application.Selection.Find.ClearFormatting;  WordDoc.Application.Selection.Find.Replacement.ClearFormatting;  WordDoc.Application.Selection.Find.Text := SearchSrc;  WordDoc.Application.Selection.Find.Replacement.Text := RplDest;  WordDoc.Application.Selection.Find.Forward := True;  WordDoc.Application.Selection.Find.Wrap := wdFindContinue;  WordDoc.Application.Selection.Find.Format := False;  WordDoc.Application.Selection.Find.MatchCase := False;  WordDoc.Application.Selection.Find.MatchWholeWord := True;  WordDoc.Application.Selection.Find.MatchByte := True;  WordDoc.Application.Selection.Find.MatchWildcards := False;  WordDoc.Application.Selection.Find.MatchSoundsLike := False;  WordDoc.Application.Selection.Find.MatchAllWordForms := False;  WordDoc.Application.Selection.Find.Execute(Replace:=wdReplaceAll);end;var  vWord, vDoc: Variant ;  strText,strReplace : string ;  I: Integer;begin  if dlgOpenWord.Execute then  begin    vWord := CreateOleObject('Word.Application');    try      vDoc := vWord.Documents.Open(dlgOpenWord.FileName);      for I := 0 to qryMain.FieldCount - 1 do              //循环字段       begin        strText := '%' + qryMain.Fields[I].FieldName + '%';        strReplace := qryMain.Fields[I].AsString;        ReplaceWordCharacters(vDoc, strText, strReplace);  //替换      end;      vWord.Visible := True;   // 替换后打开该文件    finally      //vDoc.Close(True) ;     //关闭文并保存,如果想让系统自己保函,在这里处理      //vWord.Quit(False) ;    //退出Word    end ;  end;end;



二、Delphi操作Excel替换

var  vExcel: Variant ;  strText,strReplace,strXH : string ;  I: Integer;begin  if dlgOpenExcel.Execute then  begin    vExcel := CreateOleObject('Excel.Application');    try      vExcel.WorkBooks.Open(dlgOpenExcel.FileName);      vExcel.WorkSheets[1].Activate;      vExcel.DisplayAlerts := False;      for I := 0 to qryMain.FieldCount - 1 do      begin        strText := '%' + qryMain.Fields[I].FieldName + '%';        strReplace := qryMain.Fields[I].AsString;        vExcel.Worksheets[1].Cells.Replace(strText, strReplace, False);      end;            vExcel.Visible := True;    finally    end;  end;end;



0 0
原创粉丝点击