当Dephi遇到Word

原创 2004年12月31日 22:00:00

  在Dephi 5中提供了一组Servers组件,实现了与Office的无缝结合,但有关这一方面的资料却很少,最近笔者接触了一个用户案例,要求最终将数据库中的结果总结成一份Word文档,Word文档中对于标题、正文的字体、字号,文档的纸张大小都有一定的要求,而且还要求以表格的形式体现一部分数据库中的数据。

  笔者通过查找VBA的说明,再对照Dephi的VCL,终于实现了全部功能,现将有关的内容总结如下:


  1、在当前程序目录下建立以标题字段命名的Word文件


  exepath:=application.ExeName;

  for index:=1 to length(exepath) do

  if exepath[index]='/' then

  i:=index;

  exepath:=copy(exepath,1,i);

  doc_file:=exepath+mc+'.doc';

  以标题字段“mc”命名Word文件

  try

  Wordapplication1.connect;

  except

  messagedlg('没有安装Word',mterror,[mbok],0);

  abort;

  end;

  Wordapplication1.Caption := 'XX计划书';

  Wordapplication1.visible := true;

  Worddocument1.activate;


  2、设置纸张大小


  Wordapplication1.ActiveDocument.PageSetup.PageWidth:=XXX;

  Wordapplication1.ActiveDocument.PageSetup.PageHeight:=XXX;

  Wordapplication1.ActiveDocument.PageSetup.LeftMargin := XX;

  //设置左边距

  Wordapplication1.ActiveDocument.PageSetup.rightMargin := XX; 

  //设置右边距


  3、插入页码


  var fpage,pagea:olevariant;

  fpage:=true;

  pagea:=wdAlignPageNumberCenter;

  Wordapplication1.activedocument.sections.item(1).Footers.item(1).PageNumbers.Add(pagea,fpage);


  4、设置页面横向打印


  s:=Wordapplication1.selection.start;

  e:=Wordapplication1.selection.start;

  aa:=wdSectionBreakNextPage;

  Wordapplication1.ActiveDocument.Range(s,e).InsertBreak(aa);

  Wordapplication1.Selection.Start:=Wordapplication1.Selection.Start + 1;

  s:=Wordapplication1.Selection.start;

  e:=Wordapplication1.ActiveDocument.Content.End_;

  Wordapplication1.ActiveDocument.Range(S,e).PageSetup.Orientation:=wdOrientLandscape;


  5、设置字体、字号


  Wordapplication1.Selection.Font.Size:=18;

  Wordapplication1.Selection.Font.Name := '黑体';

  Wordapplication1.Selection.TypeParagraph;

  Wordapplication1.Selection.ParagraphFormat.Alignment:= wdAlignParagraphCenter;

  Wordapplication1.Selection.TypeParagraph;

  Wordapplication1.Selection.TypeText(dbedit4.text);

  //标题 

  Wordapplication1.Selection.Font.Size := 14;

  Wordapplication1.Selection.Font.Name := '宋体';

  Wordapplication1.Selection.TypeParagraph;

  Wordapplication1.Selection.TypeParagraph;

  Wordapplication1.Selection.ParagraphFormat.Alignment := wdAlignParagraphJustify;

  Wordapplication1.Selection.TypeText(' '+trim(dbmemo1.text));

  //正文

   ... ...


  6、插入表格


  Wordapplication1.Selection.Font.Size :=10;

  adoquery2.Active:=false;

  adoquery2.active:=true;

  doc:=Wordapplication1.activedocument;

  counts:=adoquery2.RecordCount;

  //记录数决定表格的行数

  t:=doc.tables.Add(Wordapplication1.selection.range,counts+1,5);//5列

  t.cell(1,1).range.text:= '单位';

  t.Cell(1,1).Width:=120;

  t.cell(1,1).range.Paragraphs.Alignment:= wdAlignParagraphCenter;

  t.cell(1,2).range.text:= '姓名';

   ... ...

  //依次写入其他字段的表头

  for i:=2 to counts+1 do

  begin

  t.cell(i,1).range.text:=adoquery2.field

  byname('dw').asstring;

  t.Cell(i,1).Width:=120;

  t.cell(i,1).range.Paragraphs.Alignment:=

   wdAlignParagraphCenter;

  t.cell(i,2).range.text:=adoquery2.field

  byname('xm').asstring;

  ... ...

  Adoquery2.next;

  End;

  使用Dephi将Word与数据库结合,实现了用户文档的自动生成,大大地方便了用户。

 

摘自 编程爱好者网站 

http://www.programfan.com/showarticle.asp?id=2147

Delphi操作Word的方法

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

word编辑1:office2016--word编辑遇到的问题及PDF转Word(原创)

1.    公式和文字不在同一行 解决:段落----中文版式----文本对齐方式----选择居中(下拉选项)     2.    间距,公式间距 解决:段落----缩进和间距------文档网络对齐(...
  • xushaozhang
  • xushaozhang
  • 2016年09月25日 10:47
  • 1887

当 PHP 遇到 PDF

< ?php 一.在线预览在web开发当中我们经常需要进行需要在线浏览PDf内容,在线嵌入动态pdf,传统的解决方法安装客户端PDF阅读器,如果是在谷歌是可以在线浏览的,因为他自身就带了一些插件,以前...
  • chijiaodaxie
  • chijiaodaxie
  • 2015年07月23日 19:42
  • 214830

dephi7开发ocx

Delphi7 开发ocx
  • yclihua
  • yclihua
  • 2011年06月10日 02:53
  • 205

IOUtils-Dephi2010文件读取

IOUtils 单元主要就是三个结构: TDirectory、TPath、TFile, 很有用;  (1) TDirectory的功能简介-------------------------------...
  • ad_ad_ad
  • ad_ad_ad
  • 2011年06月19日 22:06
  • 1267

Dephi调用C#编写的WebService的一些问题与解决方法

http://blog.csdn.net/star_of_light/article/details/2315288 问题1:服务端接收的所有中文都是"?????"(乱码)  解决:设置HTT...
  • ghs79
  • ghs79
  • 2017年04月13日 08:04
  • 331

pos消费机dephi源代码(2)

    详细代码如下:(如有疑问可13826029618进行了解,也可直接到--www.icmcu.com-下载源代码压缩包)    unit Unit2;interfaceuses  Windows...
  • car_reader
  • car_reader
  • 2011年06月20日 16:14
  • 729

在Dephi中使用TStream读写数据的技巧

在Dephi中提供了一个抽象的数据类型TStream来支持对流式数据的操作。这些数据通常来自文件、数据库、内存对象、OLE对象等,TStream提供了统一、简洁的方法来进行数据的读写。在通常情况下,我...
  • chinajobs
  • chinajobs
  • 2016年02月20日 22:29
  • 896

dephi tcxgrid How to Retrieve the Record Values for the Selected Grid Rows

Table Views of the ExpressQuantumGrid allow you to select one or more records. If you want to retrie...
  • jzt_designer
  • jzt_designer
  • 2016年03月17日 17:28
  • 502

pos消费机dephi源代码3

     详细代码如下    unit Unit3;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, C...
  • car_reader
  • car_reader
  • 2011年06月20日 16:25
  • 359
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:当Dephi遇到Word
举报原因:
原因补充:

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