我想用DELPHI做一个打印程序,但报表格式不规则,听说可利用WORD做模板实现,但不知具体的实现过程。 (100分)

  • 主题发起人 主题发起人 happy5
  • 开始时间 开始时间
H

happy5

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用DELPHI做一个打印程序,但报表格式不规则,听说可利用WORD做模板实现,但不知具体的实现过程。
 
先用WORD画好打印的表格,然后表格内要打印内容的地方,定义标志,如要
打印日期的地方输入{DATE},姓名的地方输入{NAME}
通过DELPHI的WORD控件,调用WORD,将{DATE}字符串替换成日期,
完成后调用WORD的打印功能.
有点类似宏调用.
要注意的问题的就是替换时,注意字符串不能太长,以免撑大表格.
 
也可以用F1book作为报表模板,通过delphi将数据导入到F1book中。
F1book功能强大,做报表没问题。
 
就用fastReport做吧,非常好用。
 
procedure TfmSaleBooking.DoPrintExecute(Sender: TObject);
var
aSelection,
aDocument : Variant;
Replace,
FileName : OleVariant;
procedure FReplace(FindText : String;
ReplaceWith : String);
begin
aSelection.Find.ClearFormatting;
aSelection.Find.Replacement.ClearFormatting;
aSelection.Find.Text := FindText;
aSelection.Find.Replacement.Text := ReplaceWith;
aSelection.Find.Forward := True;
aSelection.Find.Wrap := wdFindContinue;
aSelection.Find.Format := False;
aSelection.Find.MatchCase := False;
aSelection.Find.MatchWholeWord := False;
aSelection.Find.MatchByte := True;
aSelection.Find.MatchWildcards := False;
aSelection.Find.MatchSoundsLike := False;
aSelection.Find.MatchAllWordForms := False;
replace := wdReplaceAll;
aSelection.Find.Execute(EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, replace, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
end;
begin
if qryData.Active and not qryData.IsEmpty then
with WordAppdo
begin
Connect;
Visible := False;
FileName := Global.ExePath + '购房订单.doc';
aDocument :=do
cuments.OpenOld(FileName, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
aSelection := Selection;
FReplace('<甲方>', qryData.FieldByName('company').AsString);
FReplace('<乙方>', CustName);
FReplace('<单元>', qryData.FieldByName('lk_village').AsString
+ qryData.FieldByName('lk_building').AsString
+ qryData.FieldByName('room_number').AsString);
FReplace('<建筑面积>', qryData.FieldByName('area').AsString);
FReplace('<单价>', qryData.FieldByName('unit_price').AsString);
FReplace('<总价>', qryData.FieldByName('cal_TotalPrice').AsString);
FReplace('<付款方式>', qryData.FieldByName('lk_pay_mode').AsString);
FReplace('<甲方电话>', qryData.FieldByName('phone').AsString);
FReplace('<甲方地址>', qryData.FieldByName('addr').AsString);
FReplace('<甲方邮编>', qryData.FieldByName('post_code').AsString);
FReplace('<乙方联系电话>', ContactPhone);
FReplace('<乙方地址>', Address);
FReplace('<乙方邮编>', PostCode);
FReplace('<乙方身份证号>', IdCode);
FileName := Global.ExePath + Global.NewGUID + '.doc';
aDocument.SaveAs(FileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
Visible := True;
Disconnect;
end;
end;
 
多人接受答案了。
 

Similar threads

回复
0
查看
995
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部