请问:在报表的prieview界面上,可以加一个按钮来将报表导出到excel表中吗?谢谢。

maplehjf 2005-01-27 03:03:34
这个是不是比较难,能给出一些原码吗?
...全文
84 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈祥xx 2005-01-27
  • 打赏
  • 举报
回复
改Quickrep的源代码啊
要不然你直接加一个QRExcelFilter控件也可以在点保存时选择EXCEL啊
djmdjmdjm 2005-01-27
  • 打赏
  • 举报
回复
如果需要在打印预览界面上有按钮,我的做法是将打印预览窗体重新做,增加自己需要的按钮和代码。
然后在quickreport重载此窗体
procedure Tprintdb.QuickRepPreview(Sender: TObject);
begin
with printerdb.TPreviewDB.Create(Application) do//创建自己做的打印预览的窗体printerdb
begin
QRPreview1.QRPrinter:=TQRPrinter(sender);
CurRep:=printdb;//指定此窗体
show;
end;
end;
maplehjf 2005-01-27
  • 打赏
  • 举报
回复
关键是我现在preview界面上加不了按钮啊
maplehjf 2005-01-27
  • 打赏
  • 举报
回复
谢谢大家,不太好搜。
先学习一下taiguang(银狐)的代码。
我用的是quickreport.
软件钢琴师 2005-01-27
  • 打赏
  • 举报
回复
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids,Excel2000,ComObj, Mask, DB,
DBClient;
注意:Excel2000,ComObj,还有数组的应用

procedure TkqForm11.Button4Click(Sender: TObject);
begin
dmd.bak1.First;
while not dmd.bak1.Eof do
begin
dy.Append;
dy.FieldByName('工号').AsString:=dmd.bak1.FieldByName('工号').AsString;
dy.FieldByName('姓名').AsString:=dmd.bak1.FieldByName('姓名').AsString;
dy.FieldByName('部门').AsString:=dmd.bak1.FieldByName('部门').AsString;
dy.FieldByName('加班时间').Asfloat:=dmd.bak1.FieldByName('加班时间').Asfloat;
dy.FieldByName('上班时间').AsString:=dmd.bak1.FieldByName('上班时间').AsString;
dy.FieldByName('下班时间').AsString:=dmd.bak1.FieldByName('下班时间').AsString;
dy.FieldByName('出勤').AsString:=dmd.bak1.FieldByName('出勤').AsString;
dy.FieldByName('班次').AsString:=dmd.bak1.FieldByName('班次').AsString;
dy.FieldByName('迟到时间').Asfloat:=dmd.bak1.FieldByName('迟到时间').Asfloat;
dy.FieldByName('早退时间').Asfloat:=dmd.bak1.FieldByName('早退时间').Asfloat;
dy.Post;
dmd.bak1.Next;
end;
for i:=0 to dy.FieldCount-1 do
azdbg[i]:=dy.FieldList[i].FieldName;
azint:=i;
for k:=0 to azint do
listbox1.Items.Add(azdbg[k]);
for k:=0 to listbox1.Items.Count-1 do
begin
azfld[k]:=listbox1.Items.Strings[k];
aztit[k]:=listbox1.Items.Strings[k];
azstr[k]:=copy(mystring,k+1,1);
end;
try
Excelid:=CreateOleObject( 'Excel.Application' );
except
on Exception do raise exception.Create('无法创建Xls文件,请确认是否安装EXCEL')
end;
m:=azint-1;
Excelid.Visible := True;
Excelid.WorkBooks.Add;
Excelid.Caption :='考勤记录';
//s:='A1:I1';
s:='A1:'+azstr[m]+'1';
Excelid.worksheets[1].range[s].Merge(True);
Excelid.WorkSheets[1].Cells[1,1].Value :=str1+'考勤记录';
//++++++++++
s:='A2:'+azstr[m-5]+'2';
Excelid.worksheets[1].range[s].Merge(True);
Excelid.WorkSheets[1].Cells[2,1].Value :='打印部门:'+'人事考勤管理';
{ if checkbox1.Checked=false then
Excelid.WorkSheets[1].Cells[2,1].Value :='部门:'+dmd.do1.FieldByName('部门').AsString;
else} ////

s:='F2:'+azstr[m]+'2';
Excelid.worksheets[1].range[s].Merge(True);
Excelid.WorkSheets[1].Cells[2,6].Value :='打印日期:'+copy(maskedit1.EditText,6,2)+'年'+copy(maskedit1.EditText,6,2)+'月'+copy(maskedit1.EditText,9,2)+'日';
{
s:='A2:'+azstr[m]+'2';
Excelid.worksheets[1].range[s].Merge(True);
Excelid.WorkSheets[1].Cells[2,1].Value :='打印日期:'+copy(maskedit1.EditText,6,2)+'年'+copy(maskedit1.EditText,6,2)+'月'+copy(maskedit1.EditText,9,2)+'日';
}
s:='A1:'+azstr[m]+'1';
Excelid.worksheets[1].range[s].HorizontalAlignment := $FFFFEFF4;
Excelid.worksheets[1].range[s].VerticalAlignment := $FFFFEFF4;
{ s:='A2:'+azstr[m-9]+'2';
Excelid.worksheets[1].range[s].HorizontalAlignment := $FFFFEFF4;
Excelid.worksheets[1].range[s].VerticalAlignment := $FFFFEFF4;
}
Excelid.worksheets[1].Columns[1].ColumnWidth := 5;
Excelid.worksheets[1].Columns[2].ColumnWidth := 6;
Excelid.worksheets[1].Columns[3].ColumnWidth := 8;
//**************************************************************************************************
i:=3;
for j:=1 to azint do
begin
Excelid.WorkSheets[1].Cells[i,j].Value := aztit[j-1];
end;
s:='A1:'+azstr[m]+'1';
Excelid.worksheets[1].Range[s].Font.Name := '宋体';
Excelid.worksheets[1].Range[s].Font.Size := 20;
Excelid.worksheets[1].range[s].font.bold:=true;
s:='A2:'+azstr[m]+'2';
Excelid.worksheets[1].Range[s].Font.Size := 10;
Excelid.worksheets[1].range[s].font.bold:=true;
//*****************************************************************************************

i:=4;
if dy.RecordCount>0 then
begin
dy.First;
while not dy.Eof do
begin
for j:=1 to azint do
begin
Excelid.WorkSheets[1].Cells[i,j].Value := dy.FieldByName(azfld[j-1]).asstring;
// Excelid.WorkSheets[1].Cells[i+1,j].Value := aztit[j-1];
s:='A'+IntToStr(i+1)+':'+azstr[m]+IntToStr(i-1);
{ Excelid.worksheets[1].Range[s].Font.Name := '宋体';
Excelid.worksheets[1].Range[s].Font.size := 12;
Excelid.worksheets[1].Range[s].RowHeight := 14;
Excelid.worksheets[1].Range[s].HorizontalAlignment := $FFFFEFF4;
Excelid.worksheets[1].Range[s].VerticalAlignment := $FFFFEFF4;}
Excelid.worksheets[1].range[s].font.bold:=true;
end;
i:=i+1;
dy.Next;
end;
s:='A3:'+azstr[m]+IntToStr(i-1);
Excelid.worksheets[1].Range[s].Font.Name := '宋体';
Excelid.worksheets[1].Range[s].Font.size := 10;
Excelid.worksheets[1].Range[s].RowHeight := 14;
Excelid.worksheets[1].Range[s].HorizontalAlignment := $FFFFEFF4;
Excelid.worksheets[1].Range[s].VerticalAlignment := $FFFFEFF4;
s:='A3:'+azstr[m]+IntToStr(i-1);
Excelid.worksheets[1].Range[s].Borders.LineStyle := 1;
end;
{else
s:='A2:'+azstr[m]+IntToStr(i);
Excelid.ActiveSheet.PageSetup.CenterFooter := '共&N页,第&P页';
Excelid.ActiveSheet.PageSetup.TopMargin := 1/0.035;
Excelid.ActiveSheet.PageSetup.RightMargin := 1/0.035;
Excelid.ActiveSheet.PageSetup.LeftMargin := 1/0.035;
Excelid.ActiveSheet.PageSetup.BottomMargin := 1/0.035;
}
end;
软件钢琴师 2005-01-27
  • 打赏
  • 举报
回复
不难的,你在网上艘一下有很多
软件钢琴师 2005-01-27
  • 打赏
  • 举报
回复
不难的,你在网上艘一下有很多
Cheney 2005-01-27
  • 打赏
  • 举报
回复
你使用的是什么报表?

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧