主题:有一个问题,希望大家能帮忙解决一下。
Allenjing
[专家分:0] 发布于 2006-11-24 14:28:00
怎样将数据库中的数据导出到EXCEL中?用delphi.
回复列表 (共6个回复)
沙发
wealthy [专家分:1840] 发布于 2006-11-24 14:56:00
是什么数据表?是Access表?还是db表?还是...?
板凳
Allenjing [专家分:0] 发布于 2006-11-24 17:19:00
就是 Microsoft Excel 工作表.xls。
3 楼
wealthy [专家分:1840] 发布于 2006-11-24 17:30:00
我问"数据库中的数据"是什么类型的数据表,即你想将Access表转为EXCEL?还是..?
4 楼
Allenjing [专家分:0] 发布于 2006-11-27 21:14:00
就是将DELEPHI中连接数据库的一些内容,比如职工信息,职工工资等转换成EXCEL表中的内容.其数据类型不限.
5 楼
austzhang [专家分:20] 发布于 2006-11-28 12:50:00
EXCEL怎样导入导出数据库
//导出数据到excel
procedure CopyDbDataToExcel(Target: TDbgrid);
var
iCount, jCount: Integer;
XLApp: Variant;
Sheet: Variant;
begin
Screen.Cursor := crHourGlass;
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
VarClear(XLApp);
end;
//通过ole创建Excel对象
try
XLApp := CreateOleObject('Excel.Application');
except
Screen.Cursor := crDefault;
Exit;
end;
XLApp.WorkBooks.Add[XLWBatWorksheet];
XLApp.WorkBooks[1].WorkSheets[1].Name := '对帐工作薄';
Sheet := XLApp.Workbooks[1].WorkSheets['对帐工作薄'];
if not Target.DataSource.DataSet.Active then
begin
Screen.Cursor := crDefault;
Exit;
end;
Target.DataSource.DataSet.first;
for iCount := 0 to Target.Columns.Count - 1 do
begin
Sheet.cells[1, iCount + 1] := Target.Columns.Items[iCount].Title.Caption;
end;
jCount := 1;
while not Target.DataSource.DataSet.Eof do
begin
for iCount := 0 to Target.Columns.Count - 1 do
begin
Sheet.cells[jCount + 1, iCount + 1] := Target.Columns.Items[iCount].Field.AsString;
end;
Inc(jCount);
Target.DataSource.DataSet.Next;
end;
XlApp.Visible := True;
Screen.Cursor := crDefault;
end;
procedure TfrmMain.Button1Click(Sender: TObject);
var i,j:integer;
opendialog1:Topendialog;
s0,s1,s2:string;
begin
try
opendialog1:=Topendialog.Create(self);
opendialog1.InitialDir:=ExtractFileDir(paramstr(0));//文件的打存放初始路径
if opendialog1.Execute then
begin
Try
ExcelApplication1.Connect;//EXCEL应用程序
Except
Messagebox(0,'Excel 可能没有安装!!','提示!',mb_Ok);
exit;
End;
ExcelApplication1.Visible[0]:=false;
ExcelApplication1.Caption:='Excel Application';
try
excelapplication1.Workbooks.Open(opendialog1.FileName,
null,null,null,null,null,null,null,null,null,null,null,null,0);//打开指定的EXCEL 文件
except
begin
ExcelApplication1.Disconnect;//出现异常情况时关闭
ExcelApplication1.Quit;showmessage('请选择EXCEL电子表格!');
exit;
end;
end;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
//ExcelWorkbook1与Eexcelapplication1建立连接
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
//Excelworksheet1与Excelworkbook1建立连接
//开始从EXCEL中取数,取完数后关闭EXCEL
for i:=1 to 10000 do//最大取值10000
begin
if trim(excelworksheet1.cells.item[i+1,1])<>'' then
begin
s0:= excelworksheet1.cells.item[i+1,1];
s1:= excelworksheet1.cells.item[i+1,2];
s2:= excelworksheet1.cells.item[i+1,3];
with qry do
begin
close;
sql.Clear;
sql.add('insert into xsz(PZNO,PNO,TCount,inday)values('+
''''+s0+''''+','+''''+s1+''''+','+''''+s2+''''+','+''''+datetostr(date)+''')');
ExecSQL;
end;
end
end;
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
end;
with qryxsz do
begin
sql.Clear;
sql.Add('select * from xsz order by PZNO,PNO,TCount,inday');
open;
end;
for j:=0 to grdxsz.Columns.Count do
grdxsz.Columns[j].Width:=64;//缩小宽度
messagebox(0,'文件已经导入数据库!','完成!',mb_ok);
except
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
exit;
// messagebox(0,'文件已经导入数据库失败!','完成!',mb_iconError+mb_ok);
end;
end;
try
if qryxsz.RecordCount<1 then exit;
CopyDbDataToExcel(Grdxsz);
except
// messagebox(0,'请安装EXCEL软件,再使用本功能。','提示',mb_ok);
exit;
end;
6 楼
Allenjing [专家分:0] 发布于 2006-11-28 17:46:00
谢谢楼上的!
我来回复