求助,有谁知道怎样在delphi中,将数据库转出为excell,打印?
求助,有谁知道怎样在delphi中,将数据库转出为excell,打印?
我做了一个软件,要打印,但是我想将数据转到excell中,也就转出为固定的表格,然后再打印。有谁知道不,提供下方法,或者例子,或者有什么文章。
问题点数:100、回复次数:9Top
1 楼andyzhou1101(我是一片云(Studying Java...))回复于 2006-07-02 20:07:22 得分 0
将要打印的数据显示到dbgrid或者dbgrideh中
然后导出到access
这样就可以了
-----------------------------
USES DbGridEhImpExp;
if dbgrideh1 <> nil then
begin
if saveDialog1.Execute then
begin
SaveDBGridEhToExportFile(TDBGridEhExportAsXLS,dbgrideh1,savedialog1.filename+'.xls',true);
showmessage('成功导出到'+ savedialog1.filename+'.xls');
end;
end
else
showmessage('没有数据表格可供导出') ;Top
2 楼mengjj(世界在变)回复于 2006-07-03 00:02:51 得分 0
uses
comobj;
以下是如何打开excel并往里面写数据并保存:
try
excel:=createoleobject('excel.application');
excel.visible:=false;
excel.DisplayAlerts:=False;
except
showmessage('打开Excel出错!');
exit;
end;
try
excel.workbooks.Open(path);
book:=excel.workbooks[1];
sheet:=book.worksheets[1];
sheet.cells.item[2,1]:='客户编号';
sheet.cells.item[2,2]:='客户名称';
sheet.cells.item[2,3]:='产品规格';
sheet.cells.item[2,4]:='制造工艺';
book.save;
except
ShowMessage('保存出错!');
end;Top
3 楼FigoZhu(谢慕安)回复于 2006-07-03 16:10:08 得分 0
markTop
4 楼peterluolaw(木瓜)回复于 2006-07-04 09:40:34 得分 0
procedure TForm1.Button1Click(Sender: TObject);
var
i,row,column:integer;
templete : olevariant;
begin
if datasource1.DataSet.IsEmpty then
begin
application.MessageBox('没有相应的团组资料。','注意',mb_ok+mb_iconinformation);
abort;
end;
Try
ExcelApp.Connect;
Except
MessageDlg('Excel 2000 没有安装!', mtError, [mbOk], 0);
Abort;
End;
ExcelApp.Visible[0]:=True;
ExcelApp.Caption:='交接单';
//用指定的模板文件新建一个工作薄
templete:=appdir+'交接单样张.xlt';
ExcelApp.Workbooks.Add(templete,0);
Workbook.ConnectTo(ExcelApp.Workbooks[ExcelApp.Workbooks.Count]);
Worksheet.ConnectTo(Workbook.Worksheets[1] as _Worksheet);
//向单元格添加数据
datasource1.DataSet.First;
Worksheet.Cells.Item[1,1]:='第'+labelededit1.text+'号团组交接单';
Worksheet.Cells.Item[2,1]:=statictext1.Caption;
Worksheet.Cells.Item[3,1]:=statictext2.Caption;
Worksheet.Cells.Item[4,1]:=statictext4.Caption;
Worksheet.Cells.Item[5,1]:=statictext3.Caption;
row:=8;
While Not(datasource1.DataSet.Eof) do
begin
Worksheet.Cells.Item[row,1]:=trimleft(inttostr(row-7));
column:=2;
for i:=3 to 9 do
begin
if i in [4,5,8] then
Worksheet.Cells.Item[row,column]:=formatdatetime('YYYY"年"M"月"D"日"',datasource1.DataSet.fields[i].Asdatetime)
else
Worksheet.Cells.Item[row,column]:=trim(datasource1.DataSet.fields[i].AsString);
column:=column+1;
end;
datasource1.DataSet.Next;
row:=row+1;
end;
//左边框线
worksheet.range['A7','H'+trim(inttostr(row-1))].borders[1].weight:=2;
//右边框线
worksheet.range['A7','H'+trim(inttostr(row-1))].borders[2].weight:=2;
//上边框线
worksheet.range['A7','H'+trim(inttostr(row-1))].borders[3].weight:=2;
//下边框线
worksheet.range['A7','H'+trim(inttostr(row-1))].borders[4].weight:=2;
//将各列宽度设为自动适应
worksheet.Columns.AutoFit;
//显示EXCELL 2000 的界面
excelapp.visible[0]:=true;
excelapp.Disconnect;
workbook.Disconnect;
worksheet.Disconnect;
end;
Top
5 楼IUPRG(给我点一首周截棍的“双杰伦”)回复于 2006-07-04 09:51:14 得分 0
楼上的正解...Top
6 楼xhhero()回复于 2006-07-04 21:42:53 得分 0
upTop
7 楼hongss(笑霸王)回复于 2006-07-21 16:51:18 得分 0
UPTop
8 楼ohsee(静静)回复于 2006-08-29 00:02:35 得分 0
把数据保存为*.csv文件即可Top
9 楼grjs2004(在岸边钓不到大鱼,只好下水去摸虾米!)回复于 2006-08-29 08:29:54 得分 0
可以先作好Excel表格,就是楼主说的固定格式,然后再导入到作好的Excel表格,
那样就方便多了!
相关技术可以到网上搜一下就有很多的!Top




