用word做报表输出时,如何替换页眉和页脚的文字 (50分)

  • 主题发起人 主题发起人 NewLearner
  • 开始时间 开始时间
N

NewLearner

Unregistered / Unconfirmed
GUEST, unregistred user!
我上次做的一个实验性软件的打印部分,就是用Word做报表的。你看看。
水平有限,写得不好。将就了。
---------------------
procedure TDM.ConnectWord(DotFileName: String);
var
varDotFileName: OleVariant;
begin
varDotFileName := ExpandFileName(DotFileName);

WordApp.Connect;
WordApp.Visible := True;
WordApp.Documents.Add(varDotFileName, EmptyParam, EmptyParam, EmptyParam);
WordDoc.ConnectTo(WordApp.ActiveDocument);

end;

procedure TDM.DisconnectWord;
begin
WordDoc.Disconnect;
WordApp.Disconnect;

end;

procedure TDM.WriteAccInRow(AAccInfo: TAccInInfo; Row: Integer);
begin
//填写表格
With WordDoc.Tables.Item(1) do
begin
Cell(Row, 1).Range.Text := AAccInfo.AccName;
Cell(Row, 2).Range.Text := AAccInfo.AccType;
Cell(Row, 3).Range.Text := AAccInfo.CarType;
Cell(Row, 4).Range.Text := AAccInfo.Store;
Cell(Row, 5).Range.Text := AAccInfo.AccUnit;
Cell(Row, 6).Range.Text := AAccInfo.InPrice;
Cell(Row, 7).Range.Text := AAccInfo.Remark;
end;

end;

procedure TDM.WriteAccInReport(AccInInfo: array of TAccInInfo);
var
myRange: OleVariant;
I: Integer;
begin
try
ConnectWord('./配件入库单.dot');

//增加报表的行
myRange := WordDoc.Tables.Item(1).Rows.Item(2);
for I := 1 to High(AccInInfo) - 1 do
begin
WordDoc.Tables.Item(1).Rows.Add(myRange);
end;

for I := 0 to High(AccInInfo) do
begin
//填写表格
WriteAccInRow(AccInInfo, I + 2);
end;
//更新域代码,即合计
WordDoc.Fields.Update;
except
//断开连接
DisconnectWord;
raise;
end;
DisconnectWord;

end;

procedure TDM.WriteAccOutReport(AccOutRep_AccInfo: array of TAccOutRep_AccInfo;
AccOutRep_ClientInfo: TAccOutRep_ClientInfo);
var
myRange: OleVariant;
I: Integer;
begin
try
ConnectWord('./配件出库单.dot');

//增加报表的行
myRange := WordDoc.Tables.Item(1).Rows.Item(4);
for I := 0 to High(AccOutRep_AccInfo) do
begin
WordDoc.Tables.Item(1).Rows.Add(myRange);
end;

//填写表格中客户信息
WriteAccOutClient(AccOutRep_ClientInfo);

//填写表格中配件信息
for I := 0 to High(AccOutRep_AccInfo) do
begin
WriteAccOutAcc(AccOutRep_AccInfo, I + 4);
end;
//更新域代码,即合计
WordDoc.Fields.Update;
except
//断开连接
DisconnectWord;
raise;
end;
DisconnectWord;

end;

procedure TDM.WriteAccOutClient(
AccOutRep_ClientInfo: TAccOutRep_ClientInfo);
begin
With WordDoc.Tables.Item(1) do
begin
Cell(1, 2).Range.Text := AccOutRep_ClientInfo.ClientID;
Cell(1, 4).Range.Text := AccOutRep_ClientInfo.ClientName;
Cell(1, 6).Range.Text := AccOutRep_ClientInfo.CarType;
Cell(1, 8).Range.Text := AccOutRep_ClientInfo.NumberPlate;
end;

end;

procedure TDM.WriteAccOutAcc(AccOutRep_AccInfo: TAccOutRep_AccInfo;
Row: Integer);
begin
With WordDoc.Tables.Item(1) do
begin
Cell(Row, 1).Range.Text := AccOutRep_AccInfo.AccID;
Cell(Row, 2).Range.Text := AccOutRep_AccInfo.AccName;
Cell(Row, 3).Range.Text := AccOutRep_AccInfo.AccType;
Cell(Row, 4).Range.Text := AccOutRep_AccInfo.AccUnit;
Cell(Row, 5).Range.Text := AccOutRep_AccInfo.AccOutPrice;
end;

end;
 
to 晨晨
你的方法我试用了,可以用了,但还有一问题:怎样替换word文档中的字符串
 
用书签,很好替换呀。
 
好像还可以用域来替换,只是,我记得,我上次替换后回车换行不正确。
你还是最好用表格做。我感觉操作最容易。把表格线设置为背景颜色就可以了。
 
是呀,替换我也会了,只是回车换行不正确,还有页脚的文字也不能替换,怎么办呢?
 
终于解决了回车问题,还剩一个问题,就是如何替换页脚的文字
 
接受答案了.
 
后退
顶部