急!!在delphi中如何将sql server 2000数据库中的一个表中的内容全部导到excel表中

例如将将sql server 2000数据库中表名为WORK的表中的所有记录导到excel中。可以利用ExcelApplication、ExcelWorkbook控件
若方法好,还有加分
不用查询,只是将表中的数据全存到excel中,而且我的数据库连接用的是bde,不是ado

其中BUTTON5是你界面上的“导出”按钮,而WRITEEXCEL是需要你再PRIVATE里定义的一个函数,BDE或者ADO都无所谓,你只要把你的表对应好就可以了。
procedure Tqueryform.Button5Click(Sender: TObject);
var
sname:string; //这里是用来取你界面上输入的EXCEL表名
begin
sname:=edit1.Text;
if sname<>'' then //用户输入了表名
// title:='所需数据';
writeexcel(sname)
else
writeexcel('查询结果'); //否则存为查询结果.exl
end;
procedure Tqueryform.writeexcel(sname:string);
var
j,row: integer;
filename: string;
begin
filename := concat((extractfilepath(application.exename)+'excel\'), sName, '.xls');
//保存在程序所在文件夹下的一个叫做excel的文件夹下面
//初始化
try
excelapplication1:=Texcelapplication.Create(application);
ExcelWorksheet1 := TExcelWorksheet.Create(Application);
ExcelWorkbook1 := TExcelWorkbook.Create(Application);
ExcelApplication1.Connect;
except
Application.Messagebox('Excel 没有安装!', 'Hello', MB_ICONERROR + mb_Ok);
Abort;
end;
//数据的导出
try
begin
ExcelApplication1.Workbooks.Add(EmptyParam, 0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);
//给表格的每个单元附值
excelworksheet1.Cells.Item[1,1]:='工号'; //这个根据你的数据表对应的变量名
excelworksheet1.Cells.Item[1,2]:='日期';
excelworksheet1.Cells.Item[1,3]:='表型';
excelworksheet1.Cells.Item[1,4]:='地址';
excelworksheet1.Cells.Item[1,5]:='原因';
row:=2;
maindm.ADOQuery2.First;
while not maindm.ADOQuery2.Eof do
begin
for j:=1 to 5 do
begin
excelworksheet1.Cells.Item[row,j]:=maindm.ADOQuery2.Fields[j-1].AsString;
end; //end ...for
maindm.ADOQuery2.Next;
row:=row+1; //得到查询后的行数
end;
ExcelWorksheet1.SaveAs(filename);
Application.Messagebox(pchar('数据成功导出' + filename), 'Hello',mb_Ok);
end //end try...finally
//结束释放空间
finally
ExcelApplication1.Disconnect; //断开连接
ExcelApplication1.Quit; //退出EXCEL
ExcelApplication1.Free;//释放空间
ExcelWorksheet1.Free; //释放空间
ExcelWorkbook1.Free; //释放空间
end;
end;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-04-24
//传入连接字符串、表的查询语句、要保存的excel的名称就可以了。
Procedure TdqcFunction.Db_Excel_Export(Connstr_Sql,SelectSql:String;SaveName:String);
var
xlApp,xlBook,xlSheet,xlQuery: Variant;
adoConnection,adoRecordset: Variant;
Begin
Try
adoConnection := CreateOleObject('ADODB.Connection');
adoRecordset := CreateOleObject('ADODB.Recordset');
adoConnection.Open(Connstr_Sql);
adoRecordset.CursorLocation := adUseClient;
adoRecordset.Open(SelectSql,adoConnection,1,3);
xlApp := CreateOleObject('Excel.Application');
xlBook := xlApp.Workbooks.Add;
xlSheet := xlBook.Worksheets['sheet1'];
xlApp.Visible := False;
//把查询结果导入EXCEL数据
xlQuery := xlSheet.QueryTables.Add(adoRecordset,xlSheet.Range['A1']); //关键是这一句
xlQuery.FieldNames := True;
xlQuery.RowNumbers := False;
xlQuery.FillAdjacentFormulas := False;
xlQuery.PreserveFormatting := True;
xlQuery.RefreshOnFileOpen := False;
xlQuery.BackgroundQuery := True;
//xlQuery.RefreshStyle := xlInsertDeleteCells;
xlQuery.SavePassword := True;
xlQuery.SaveData := True;
xlQuery.AdjustColumnWidth := True;
xlQuery.RefreshPeriod := 0;
xlQuery.PreserveColumnInfo := True;
xlQuery.FieldNames := True;
xlQuery.Refresh;
xlSheet.SaveAs(SaveName);
Except
End;
End;
相似回答