怎样把数据导入EXCEL ( 积分: 50 )

  • 主题发起人 主题发起人 toy_rong
  • 开始时间 开始时间
T

toy_rong

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样把数据导入EXCEL
 
去baidu搜搜吧!有很多源码!
我们公司只有几台机器可以上网,下载完东西还得用U盘拷贝到经理哪,最后才能考到自己的机器上!麻烦的很!
要不我就给你贴代码了
 
procedure Tgzsr.suiButton5Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
SaveDBGridEhToExportFile(TDBGridEhExportAsXLS,DBGridEh1,SaveDialog1.FileName,True);
ShowMessage('Excel文件已保存!');
end;
end;
 
我给你一个,我一直在用的,这是我程序的一段。
procedure TFmain.EXCEL1Click(Sender: TObject);
var
i, f, N,fc,i1: Integer;
str, strname: string;
StrList: TStringList; //用于存储数据的字符列表
SaveDialog1: TSaveDialog;
begin
if DM1.qry2.Active=False then
begin
Application.MessageBox(pchar('无记录,无法导出。'), '提示', MB_ICONWARNING);
Exit;
end;

if DM1.qry2.RecordCount <= 0 then
begin
Application.MessageBox(pchar('无记录,无法导出。'), '提示', MB_ICONWARNING);
exit;
end;
try
try
StrList := TStringList.Create;
N := DM1.qry2.RecordCount;
fc:=DM1.qry2.FieldCount-1;
with DM1.qry2 do
begin
First;
DisableControls;
strname := '';

for i1:=0 to fc do
begin
//if i1<>fc then
strname:=strname+DM1.qry2.Fields[i1].FieldName+#9
//else
// strname:=strname+DM1.qry2.Fields[i1].FieldName;
end;

StrList.Add(strname);
for f := 1 to N do
begin

str := '';
for i := 0 to fc do
begin
str := str + Fields.AsString + #9;
end;
next;
// SHOWMESSAGE(STR);
StrList.Add(str);
end;

SaveDialog1 := TSaveDialog.Create(Application);
SaveDialog1.InitialDir := extractfilePath(Application.exename);
SaveDialog1.Title := '导出数据到...';

SaveDialog1.filter := 'Microsoft Excel 文件(*.XLS)|*.XLS';
if SaveDialog1.execute then
begin
if SaveDialog1.filename <> '' then
// StrList.SaveToFile(WPath+'/'+S+'数据.xls');
StrList.SaveToFile(SaveDialog1.filename + '.xls');
//StrList.SaveToFile(WPath + '/导出数据.xls');
EnableControls;
application.MessageBox(pchar('成功输出数据到' + SaveDialog1.filename+'.xls' + '!'), '提示',0);
end;
end;
finally
StrList.Free;
end;
except
Application.MessageBox(pchar('无法创建EXCEL表,检测是否已经打开!'), '提示', MB_ICONWARNING);
end;

end;
 
SQL SERVER 与ACCESS、EXCEL的数据转换

熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助。利用下述方法,可以十分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下:



一、 SQL SERVER 和ACCESS的数据导入导出

Transact-SQL语句进行导入导出:

1. 在SQL SERVER里查询access数据:

-- ======================================================

SELECT *

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="c:/DB.mdb";User ID=Admin;Password=')...表名

-------------------------------------------------------------------------------------------------



2. 将access导入SQL server

-- ======================================================

在SQL SERVER 里运行:

SELECT *

INTO newtable

FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0',

'Data Source="c:/DB.mdb";User ID=Admin;Password=' )...表名

-------------------------------------------------------------------------------------------------



3. 将SQL SERVER表里的数据插入到Access表中

-- ======================================================

在SQL SERVER 里运行:

insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source=" c:/DB.mdb";User ID=Admin;Password=')...表名

(列名1,列名2)

select 列名1,列名2 from sql表



实例:

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',

'C:/db.mdb';'admin';'', Test)

select id,name from Test





INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:/trade.mdb'; 'admin'; '', 表名)

SELECT *

FROM sqltablename

-------------------------------------------------------------------------------------------------











二、 SQL SERVER 和EXCEL的数据导入导出



1、在SQL SERVER里查询Excel数据:

-- ======================================================

SELECT *

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="c:/book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]



下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。

SELECT *
FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:/Finance/account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
-------------------------------------------------------------------------------------------------



2、将Excel的数据导入SQL server :

-- ======================================================

SELECT * into newtable

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="c:/book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]



实例:

SELECT * into newtable

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="c:/Finance/account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

-------------------------------------------------------------------------------------------------



3、将SQL SERVER中查询到的数据导成一个Excel文件

-- ======================================================

T-SQL代码:

EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:/Temp.xls -c -q -S"servername" -U"sa" -P""'

参数:S 是SQL服务器名;U是用户;P是密码

说明:还可以导出文本文件等多种格式



实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:/temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'



EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:/ authors.xls -c -Sservername -Usa -Ppassword'



在VB6中应用ADO导出EXCEL文件代码:

Dim cn As New ADODB.Connection

cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"

cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:/DT.xls -c -Sservername -Usa -Ppassword'"

-------------------------------------------------------------------------------------------------



4、在SQL SERVER里往Excel插入数据:

-- ======================================================

insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="c:/Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)



T-SQL代码:

INSERT INTO

OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',

'Extended Properties=Excel 8.0;Data source=C:/training/inventur.xls')...[Filiale1$]

(bestand, produkt) VALUES (20, 'Test')
 
最简单的方法:用第三方打印控件中有另存为EXCEL格式就行了
 
后退
顶部