當Dephi遇到Word
發表時間:2023-08-20 來源:明輝站整理相關軟件相關文章人氣:
[摘要]在Dephi 5中提供了一組Servers組件,實現了與Office的無縫結合,但有關這一方面的資料卻很少,最近筆者接觸了一個用戶案例,要求最終將數據庫中的結果總結成一份Word文檔,Word文檔中...
在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與數據庫結合,實現了用戶文檔的自動生成,大大地方便了用戶。