我在delphi利用server的控件,我将dbgrid生成表格,但是怎样修改word的页眉和页脚?(200分)

  • 主题发起人 主题发起人 dcsdcs
  • 开始时间 开始时间
D

dcsdcs

Unregistered / Unconfirmed
GUEST, unregistred user!
我在delphi利用server控件,我将dbgrid生成表格,但是怎样修改word的页眉和页脚?
欢迎大家提前。
200分献上
 
我也在作vba,被弄得头昏眼花的,如果使用vba可以用录制宏,在修改成代码的方式,
你的dbgrid是怎么转换的?希望交流:)
 
我采用WordApplication控件打开word,然后WordDocument生成文档,WordFont继承dbgrid的字体,
WordDocument。table生成WORD中的表格,和文字,就是不能修改页眉和页脚!希望交流!
 
请问管理员,我自己通过Word录制宏,再修改成代码,解决了问题!请管理员给分!。
 
多人接受答案了。
 
to:dcsdcs
能给我一些原码吗?控制表格和页眉页脚的!谢谢
 
我把明天源玛贴在老地方,请大家稍微瞧瞧,谢谢!
 
以下是我写的部分控制表格和页眉、页脚的代码,欢迎大家参与讨论
begin
try
Template := EmptyParam;
NewTemplate := false;
ItemIndex := 1;
try
Wordapplication.Connect;
except
MessageDlg('你没有安装WORD软件!', mtError, [mbOk], 0);
Abort;
end;
autoformat:=true;
Wordapplication.Visible := True;
WordApplication.Caption := '自动生成WORD文件表格';
Template := EmptyParam;
NewTemplate := False;
if ChkBoxNewDoc.Checked then
begin
WordApplication.Documents.Add(Template, NewTemplate);
WordDocument.ConnectTo(WordApplication.Documents.Item(ItemIndex));
end;
//建立文档
WordApplication.Options.CheckSpellingAsYouType := False;
WordApplication.Options.CheckGrammarAsYouType := False;
pagew:=WordDocument.PageSetup.PageWidth-worddocument.PageSetup.Get_rightMargin-worddocument.PageSetup.Get_leftMargin;
//pagew是页面设置表格的总宽度
with WordDocumentdo
begin
tables.Add(WordDocument.Words.Last,self.DBGrid.DataSource.DataSet.RecordCount+1,self.DBGrid.DataSource.DataSet.FieldCount);
//插入表格
gridw:=0;
for rowi:=0 to dbgrid.Columns.Count-1do
//建立单元格宽度
begin
WordFont.ConnectTo(WordDocument.Sentences.Get_Last.Font);
WordFont.Bold := 1;
tables.Item(1).Cell(1,rowi+1).Range.Set_Text(DBGrid.Columns[rowi].Title.Caption);
gridw:=gridw+dbgrid.Columns[rowi].Width;
end;
for rowi:=0 to dbgrid.Columns.Count-1do
begin
grideveryw:=((dbgrid.Columns[rowi].Width-2) / gridw)*(pagew);
tables.Item(1).Columns.item(rowi+1).Set_Width(grideveryw);
end;
WordFont.ConnectTo(WordDocument.Sentences.Get_Last.Font);
WordFont.Bold := 0;
DBGrid.DataSource.DataSet.first;
for coli:=0 to self.DBGrid.DataSource.DataSet.RecordCount-1do
begin
for rowi:=0 to dbgrid.Columns.Count-1do
begin
try
case DBGrid.Columns[rowi].Field.DataType of
ftGraphic://如果是图
begin
DBImgFishImg.CopyToClipboard;
tables.Item(1).Cell(coli+2,rowi+1).Range.Paste;
end;
ftMemo:
begin
tables.Item(1).Cell(coli+2,rowi+1).Range.Set_Text('简要介绍(略)');
end;
else
tables.Item(1).Cell(coli+2,rowi+1).Range.Set_Text(DBGrid.DataSource.DataSet.Fields[rowi].AsString);
end;
except
end;
end;
DBGrid.DataSource.DataSet.Next;
end;

end;
WordDocument.Range.PageSetup.Set_BottomMargin(100);
WordDocument.Range.InsertAfter('表格填写结束!');
worddocument.PageSetup.Set_Gutter(30);
worddocument.PageSetup.Set_GutterOnTop(true);
coli:=1;
with WordDocumentdo
begin
If ActiveWindow.View.SplitSpecial <> wdPaneNone then
ActiveWindow.Panes.Item(2).Close;
//.Panes[2].Close;
ActiveWindow.ActivePane.View.SeekView:=wdSeekCurrentPageHeader;//显示页眉
Application.Selection.ParagraphFormat.Alignment := wdAlignParagraphCenter;
//中间对齐
//wdAlignParagraphRight:右边对齐;
//wdAlignParagraphJustify:两边对齐;
//wdAlignParagraphLeft:左边对齐;
//wdAlignParagraphCenter:中间对齐;
Application.Selection.TypeText('dcsdcs初次开发的软件,设置页眉!酷吧!!!');
ActiveWindow.ActivePane.View.SeekView := wdSeekCurrentPageFooter;//显示页脚
Application.Selection.ParagraphFormat.Alignment := wdAlignParagraphLeft;
Application.Selection.TypeText('dcsdcs初次开发的软件,设置页脚!酷吧!!!');
ActiveWindow.ActivePane.View.SeekView:=wdSeekMainDocument;
end;
BtnCloseWord.Enabled := True;
BtnPrint.Enabled := True;
BtnPreview.Enabled := True;
except
on E: Exceptiondo
begin
ShowMessage(E.Message);
WordApplication.Disconnect;
end;
end;
end;
 
后退
顶部