使用Delphi 7控制Word 2000生成文档的方法

原创 2004年10月08日 09:03:00

最近帮同学用Delphi 7写的一个数据库应用中的一个功能是将查询的结果导出到一个Word文档中保存。虽然Delphi 7的Servers面板中提供了TWordApplication和TWordDocument组件,但是帮助中却几乎没有写它们的使用方法。于是在中国期刊网上down了许多的相关文章来看,只可惜几乎都是用Delphi 5写的(Delphi 7中不能兼容),而且都只是简单的介绍了一下,甚是郁闷。在经过一天的摸索之后终于用Delphi 7实现了这个功能。代码如下:
//uses Word2000, ComObj;
//WordApp: TWordApplication;
//WordDoc: TWordDocument;
procedure TfrmDetails.btnExportClick(Sender: TObject); //单击“导出“按钮
var
  V:Variant;
  Template,NewTemplate,DocumentType,Visible:OleVariant;
  itemIndex:OleVariant;
  fileName:Olevariant;
  NoPrompt,OriginalFormat:OleVariant;
  RouteDocument,SaveChanges:OleVariant;
begin
  //指定文档的路径和文件名
  fileName:='C:/LogAdmin/doc/'+'值班日志'+Trim(DBTextID.Caption)+'.doc';
  //如果该日志的对应Word文档已经存在则提示是否覆盖
  if FileExists(fileName)=true then
    begin
      Beep;
      if Application.MessageBox('文档已经存在,是否覆盖?','警告',MB_OKCANCEL)=IDCANCEL then
        Abort;
    end;
  //测试当前是否运行了Word 2000
  try
    V:=GetActiveOleObject('Word.Application');
  except
    //未运行则运行之
    V:=CreateOleObject('Word.Basic');
  end;
  try
    //连接到Word 2000
    WordApp.Connect;
  except
    Beep;
    MessageDlg('不能生成文档,请确认是否安装了Word 2000!',mtError,[mbOK],0);
    Abort;
  end;
  //显示Word 2000
  WordApp.Visible:=true;
 
//给调用Add函数使用的实参赋值
  Template:=EmptyParam;
  NewTemplate:=False;
  DocumentType:=wdNewBlankDocument;
  Visible:=true;
  //调用Add函数
  WordApp.Documents.Add(Template,NewTemplate,DocumentType,Visible);
  //连接到新建的文档
  itemIndex:=1;
  WordDoc.ConnectTo(WordApp.Documents.Item(itemIndex));
  //文档另存为
  WordDoc.SaveAs(fileName);
  //开始向Word文档中写入内容
  with WordApp.Selection do
    begin
      Font.Size:=20;
      Font.Bold:=2;
      Paragraphs.Alignment:=wdAlignParagraphCenter;
      TypeText('值班日志详细内容');
      TypeParagraph; //换行
      TypeParagraph; 
      Font.Size:=12;
      Font.Bold:=0;
      Paragraphs.Alignment:=wdAlignParagraphLeft;
      TypeText('编号:    '+DBTextID.Caption);
      TypeParagraph;
      TypeText('日期:    '+DBTextDate.Caption);
      TypeParagraph;
      TypeText('温度:    '+DBTextT.Caption);
      TypeParagraph;
      TypeText('湿度:    '+DBTextH.Caption);
      TypeParagraph;
      TypeText('天气:    '+DBTextWeather.Caption);
      TypeParagraph;
      TypeText('值班人:  '+DBTextName.Caption);
      TypeParagraph;
      TypeText('值班时间:'+DBTextTime.Caption);
      TypeParagraph;
      TypeText('有无异常:'+lbException.Caption);
      TypeParagraph;
      TypeText('使用工具:');
      TypeParagraph;
      TypeText(DBMemoTool.Text);
      TypeParagraph;
      TypeText('现场环境:');
      TypeParagraph;
      TypeText(DBMemoEnv.Text);
      TypeParagraph;
      TypeText('记录一:  ');
      TypeParagraph;
      TypeText(DBMemoR1.Text);
      TypeParagraph;
      TypeText('记录二:  ');
      TypeParagraph;
      TypeText(DBMemoR2.Text);
      TypeParagraph;
      TypeText('记录三:  ');
      TypeParagraph;
      TypeText(DBMemoR3.Text);
      TypeParagraph;
      TypeText('备注:    ');
      TypeParagraph;
      TypeText(DBMemoMemo.Text);
      TypeParagraph;
    end;
 
//保存文档
  NoPrompt:=false;
  OriginalFormat:=wdOriginalDocumentFormat;
  WordApp.Documents.Save(NoPrompt,OriginalFormat);

  //关闭文档
  SaveChanges:=wdSaveChanges;
  OriginalFormat:=wdOriginalDocumentFormat;
  RouteDocument:=false;
  WordApp.Documents.Close(SaveChanges,OriginalFormat,RouteDocument);
 
//断开和Word 2000的连接
  WordApp.Disconnect;

  MessageDlg('日志内容导出成功!保存为'+fileName,mtInformation,[mbOK],0);
  //关闭窗体
  frmDetails.Close;
end;

Delphi操作Word中的表

Procedure GetWordCellStr; var     WordApp: TWordApplication;     WordDoc: TWordDocument;     Doc...
  • my98800
  • my98800
  • 2016年09月29日 11:32
  • 770

Delphi与Word之间的融合技术

一、VBA代码含义Microsoft Word是一个集成化环境,是美国微软公司的字处理系统,但是它决不仅仅是一个字处理系统,它集成了Microsoft Visual Basic,可以通过编程来实现对W...
  • qiankun19851231
  • qiankun19851231
  • 2007年10月09日 10:26
  • 753

Delphi操作word的基本用法

刚把delphi捡起来,第一个要做的竟然操作word,总结一下。一. 定义word应用程序,文档对象,比如:wordApp: OleVariant;   wordDoc: OleVariant;二. ...
  • soasoa
  • soasoa
  • 2008年09月19日 12:56
  • 7862

Delphi向Word导出数据

最近客户要求将数据导出到word,查找了一些源代码后做出来了.先将方法共享出来.希望对大家有用. procedure TFrmWeekAnalysisQry.BtnExportToExcelClick...
  • henreash
  • henreash
  • 2008年03月28日 18:00
  • 3686

Delphi操作Word的方法

Delphi操作Word的方法 一、VBA代码含义 Microsoft Word是一个集成化环境,是美国微软公司的字处理系统,但是它决不仅仅是一个字处理系统,它集成了Microsoft Vis...
  • xieyunc
  • xieyunc
  • 2015年11月27日 17:43
  • 2819

delphi操作word实例

  • 2013年12月25日 15:30
  • 166KB
  • 下载

很实用的delphi操作word和excel自动生成文档工具,附代码

  • 2015年03月30日 14:08
  • 637KB
  • 下载

在Delphi中很精确地控制生成的WORD文档的格式

var    WordApplication1: TWordApplication; 通过以下的方式就可以在DELPHI中很精确地控制生成的WORD文档的格式。     //-----------...
  • han99yi
  • han99yi
  • 2014年08月05日 09:30
  • 1607

Delphi中实现把数据集中的数据导出为word

  • 2008年07月31日 14:13
  • 4KB
  • 下载

delphi操作word

delphi操作word 一、Delphi程序启动Word 采用CreateOleObjects的方法来启动Word,调用VBA代码,具体实现过程为: 首先使用GetActiveOleObjec...
  • han99yi
  • han99yi
  • 2014年12月12日 11:14
  • 704
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Delphi 7控制Word 2000生成文档的方法
举报原因:
原因补充:

(最多只允许输入30个字)