通过SQL语句直接实现Excel与数据库的导入导出

导入/导出Excel
1.–从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:
/*===================================================================*/
–如果接受数据导入的表已经存在

《通过SQL语句直接实现Excel与数据库的导入导出》
insert
 
into
 表 
select
 
*
 
from
 
《通过SQL语句直接实现Excel与数据库的导入导出》

OPENROWSET
(

MICROSOFT.JET.OLEDB.4.0


《通过SQL语句直接实现Excel与数据库的导入导出》,


Excel 5.0;HDR=YES;DATABASE=c: est.xls

,sheet1$)

–如果导入数据并生成表

《通过SQL语句直接实现Excel与数据库的导入导出》
select
 
*
 
into
 表 
from
 
《通过SQL语句直接实现Excel与数据库的导入导出》

OPENROWSET
(

MICROSOFT.JET.OLEDB.4.0


《通过SQL语句直接实现Excel与数据库的导入导出》,


Excel 5.0;HDR=YES;DATABASE=c: est.xls

,sheet1$)

/*===================================================================*/

2.–从SQL数据库中,导出数据到Excel:
–如果从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用:

《通过SQL语句直接实现Excel与数据库的导入导出》
insert
 
into
 
OPENROWSET
(

MICROSOFT.JET.OLEDB.4.0


《通过SQL语句直接实现Excel与数据库的导入导出》,


Excel 5.0;HDR=YES;DATABASE=c: est.xls

,sheet1$)
《通过SQL语句直接实现Excel与数据库的导入导出》

select
 
*
 
from
 表

–如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写:
–导出表的情况

《通过SQL语句直接实现Excel与数据库的导入导出》
EXEC
 master..xp_cmdshell 

bcp 数据库名.dbo.表名 out “c: est.xls” /c -/S”服务器名” /U”用户名” -P”密码”

–导出查询的情况

《通过SQL语句直接实现Excel与数据库的导入导出》
EXEC
 master..xp_cmdshell 

bcp “SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname” queryout “c: est.xls” /c -/S”服务器名” /U”用户名” -P”密码”


《通过SQL语句直接实现Excel与数据库的导入导出》

/*–说明:
c:/test.xls  为导入/导出的Excel文件名.
sheet1$      为Excel文件的工作表名,一般要加上$才能正常使用.
–*/
 

3.–建立存储过程,导出真正的Excel文件(用此方法导出的Excel文件在用于导入时不会报错)

《通过SQL语句直接实现Excel与数据库的导入导出》

下面是导出真正Excel文件的方法:(请将一下所有代码复制到存储过程中)

《通过SQL语句直接实现Excel与数据库的导入导出》


《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
exists
 (
select
 
*
 
from
 dbo.sysobjects 
where
 id 
=
 
object_id
(N

[dbo].[p_exporttb]


and
 
OBJECTPROPERTY
(id, N

IsProcedure


=
 
1
)
《通过SQL语句直接实现Excel与数据库的导入导出》

drop
 
procedure
 
[
dbo
]
.
[
p_exporttb
]

《通过SQL语句直接实现Excel与数据库的导入导出》

GO

《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》《通过SQL语句直接实现Excel与数据库的导入导出》

/**/
/*–数据导出EXCEL
《通过SQL语句直接实现Excel与数据库的导入导出》 
《通过SQL语句直接实现Excel与数据库的导入导出》 导出表中的数据到Excel,包含字段名,文件为真正的Excel文件
《通过SQL语句直接实现Excel与数据库的导入导出》 ,如果文件不存在,将自动创建文件
《通过SQL语句直接实现Excel与数据库的导入导出》 ,如果表不存在,将自动创建表
《通过SQL语句直接实现Excel与数据库的导入导出》 基于通用性考虑,仅支持导出标准数据类型
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》–邹建 2003.10(引用请保留此信息)–
*/


《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》《通过SQL语句直接实现Excel与数据库的导入导出》

/**/
/*–调用示例
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》 p_exporttb @tbname=’地区资料’,@path=’c:’,@fname=’aa.xls’
《通过SQL语句直接实现Excel与数据库的导入导出》
*/


《通过SQL语句直接实现Excel与数据库的导入导出》

create
 
proc
 p_exporttb
《通过SQL语句直接实现Excel与数据库的导入导出》

@tbname
 sysname,    

要导出的表名

《通过SQL语句直接实现Excel与数据库的导入导出》

@path
 
nvarchar
(
1000
),   

文件存放目录

《通过SQL语句直接实现Excel与数据库的导入导出》

@fname
 
nvarchar
(
250
)
=

  

文件名,默认为表名

《通过SQL语句直接实现Excel与数据库的导入导出》

as

《通过SQL语句直接实现Excel与数据库的导入导出》

declare
 
@err
 
int
,
@src
 
nvarchar
(
255
),
@desc
 
nvarchar
(
255
),
@out
 
int

《通过SQL语句直接实现Excel与数据库的导入导出》

declare
 
@obj
 
int
,
@constr
 
nvarchar
(
1000
),
@sql
 
varchar
(
8000
),
@fdlist
 
varchar
(
8000
)
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》


参数检测

《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
isnull
(
@fname
,

)
=

 
set
 
@fname
=
@tbname
+

.xls


《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》


检查文件是否已经存在

《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
right
(
@path
,
1
)
<>



 
set
 
@path
=
@path
+




《通过SQL语句直接实现Excel与数据库的导入导出》

create
 
table
 #tb(a 
bit
,b 
bit
,c 
bit
)
《通过SQL语句直接实现Excel与数据库的导入导出》

set
 
@sql
=
@path
+
@fname

《通过SQL语句直接实现Excel与数据库的导入导出》

insert
 
into
 #tb 
exec
 master..xp_fileexist 
@sql

《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》


数据库创建语句

《通过SQL语句直接实现Excel与数据库的导入导出》

set
 
@sql
=
@path
+
@fname

《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
exists
(
select
 
1
 
from
 #tb 
where
 a
=
1
)
《通过SQL语句直接实现Excel与数据库的导入导出》 

set
 
@constr
=

DRIVER={Microsoft Excel Driver (*.xls)};DSN=
””
;READONLY=FALSE


《通过SQL语句直接实现Excel与数据库的导入导出》       

+

;CREATE_DB=”

+
@sql
+

“;DBQ=

+
@sql

《通过SQL语句直接实现Excel与数据库的导入导出》

else

《通过SQL语句直接实现Excel与数据库的导入导出》 

set
 
@constr
=

Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=”Excel 8.0;HDR=YES


《通过SQL语句直接实现Excel与数据库的导入导出》    

+

;DATABASE=

+
@sql
+




《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》


连接数据库

《通过SQL语句直接实现Excel与数据库的导入导出》

exec
 
@err
=
sp_oacreate 

adodb.connection

,
@obj
 out
《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
@err
<>
0
 
goto
 lberr
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

exec
 
@err
=
sp_oamethod 
@obj
,

open

,
null
,
@constr

《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
@err
<>
0
 
goto
 lberr
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》《通过SQL语句直接实现Excel与数据库的导入导出》

/**/
/*–如果覆盖已经存在的表,就加上下面的语句
《通过SQL语句直接实现Excel与数据库的导入导出》–创建之前先删除表/如果存在的话
《通过SQL语句直接实现Excel与数据库的导入导出》select @sql=’drop table [‘+@tbname+’]’
《通过SQL语句直接实现Excel与数据库的导入导出》exec @err=sp_oamethod @obj,’execute’,@out out,@sql
《通过SQL语句直接实现Excel与数据库的导入导出》
*/


《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》


创建表的SQL

《通过SQL语句直接实现Excel与数据库的导入导出》

select
 
@sql
=

,
@fdlist
=


《通过SQL语句直接实现Excel与数据库的导入导出》

select
 
@fdlist
=
@fdlist
+

,[

+
a.name
+

]


《通过SQL语句直接实现Excel与数据库的导入导出》 ,

@sql
=
@sql
+

,[

+
a.name
+




《通过SQL语句直接实现Excel与数据库的导入导出》  

+
case
 
《通过SQL语句直接实现Excel与数据库的导入导出》   

when
 b.name 
like
 

%char

 
《通过SQL语句直接实现Excel与数据库的导入导出》   

then
 
case
 
when
 a.length
>
255
 
then
 

memo


《通过SQL语句直接实现Excel与数据库的导入导出》    

else
 

text(

+
cast
(a.length 
as
 
varchar
)
+

)

 
end

《通过SQL语句直接实现Excel与数据库的导入导出》   

when
 b.name 
like
 

%int

 
or
 b.name
=

bit

 
then
 

int


《通过SQL语句直接实现Excel与数据库的导入导出》   

when
 b.name 
like
 

%datetime

 
then
 

datetime


《通过SQL语句直接实现Excel与数据库的导入导出》   

when
 b.name 
like
 

%money

 
then
 

money


《通过SQL语句直接实现Excel与数据库的导入导出》   

when
 b.name 
like
 

%text

 
then
 

memo


《通过SQL语句直接实现Excel与数据库的导入导出》   

else
 b.name 
end

《通过SQL语句直接实现Excel与数据库的导入导出》

FROM
 syscolumns a 
left
 
join
 systypes b 
on
 a.xtype
=
b.xusertype
《通过SQL语句直接实现Excel与数据库的导入导出》

where
 b.name 
not
 
in
(

image

,

uniqueidentifier

,

sql_variant

,

varbinary

,

binary

,

timestamp

)
《通过SQL语句直接实现Excel与数据库的导入导出》 

and
 
object_id
(
@tbname
)
=
id
《通过SQL语句直接实现Excel与数据库的导入导出》

select
 
@sql
=

create table [

+
@tbname

《通过SQL语句直接实现Excel与数据库的导入导出》 

+

](

+
substring
(
@sql
,
2
,
8000
)
+

)


《通过SQL语句直接实现Excel与数据库的导入导出》 ,

@fdlist
=
substring
(
@fdlist
,
2
,
8000
)
《通过SQL语句直接实现Excel与数据库的导入导出》

exec
 
@err
=
sp_oamethod 
@obj
,

execute

,
@out
 out,
@sql

《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
@err
<>
0
 
goto
 lberr
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

exec
 
@err
=
sp_oadestroy 
@obj

《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》


导入数据

《通过SQL语句直接实现Excel与数据库的导入导出》

set
 
@sql
=

openrowset(

MICROSOFT.JET.OLEDB.4.0

,

Excel 8.0;HDR=YES;IMEX=1
《通过SQL语句直接实现Excel与数据库的导入导出》   ;DATABASE=


+
@path
+
@fname
+
”’
,[

+
@tbname
+

$])


《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

exec
(

insert into 

+
@sql
+

(

+
@fdlist
+

) select 

+
@fdlist
+

 from 

+
@tbname
)
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

return

《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》lberr:
《通过SQL语句直接实现Excel与数据库的导入导出》 

exec
 sp_oageterrorinfo 
0
,
@src
 out,
@desc
 out
《通过SQL语句直接实现Excel与数据库的导入导出》lbexit:
《通过SQL语句直接实现Excel与数据库的导入导出》 

select
 
cast
(
@err
 
as
 
varbinary
(
4
)) 
as
 错误号
《通过SQL语句直接实现Excel与数据库的导入导出》  ,

@src
 
as
 错误源,
@desc
 
as
 错误描述
《通过SQL语句直接实现Excel与数据库的导入导出》 

select
 
@sql
,
@constr
,
@fdlist

《通过SQL语句直接实现Excel与数据库的导入导出》

go

《通过SQL语句直接实现Excel与数据库的导入导出》 
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
exists
 (
select
 
*
 
from
 dbo.sysobjects 
where
 id 
=
 
object_id
(N

[dbo].[p_exporttb]


and
 
OBJECTPROPERTY
(id, N

IsProcedure


=
 
1
)
《通过SQL语句直接实现Excel与数据库的导入导出》

drop
 
procedure
 
[
dbo
]
.
[
p_exporttb
]

《通过SQL语句直接实现Excel与数据库的导入导出》

GO

《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》《通过SQL语句直接实现Excel与数据库的导入导出》

/**/
/*–数据导出EXCEL
《通过SQL语句直接实现Excel与数据库的导入导出》 
《通过SQL语句直接实现Excel与数据库的导入导出》 导出查询中的数据到Excel,包含字段名,文件为真正的Excel文件
《通过SQL语句直接实现Excel与数据库的导入导出》 如果文件不存在,将自动创建文件
《通过SQL语句直接实现Excel与数据库的导入导出》 如果表不存在,将自动创建表
《通过SQL语句直接实现Excel与数据库的导入导出》 基于通用性考虑,仅支持导出标准数据类型
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》–邹建 2003.10(引用请保留此信息)–
*/


《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》《通过SQL语句直接实现Excel与数据库的导入导出》

/**/
/*–调用示例
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》 p_exporttb @sqlstr=’select * from 地区资料’
《通过SQL语句直接实现Excel与数据库的导入导出》  ,@path=’c:’,@fname=’aa.xls’,@sheetname=’地区资料’
《通过SQL语句直接实现Excel与数据库的导入导出》
*/


《通过SQL语句直接实现Excel与数据库的导入导出》

create
 
proc
 p_exporttb
《通过SQL语句直接实现Excel与数据库的导入导出》

@sqlstr
 
varchar
(
8000
),   

查询语句,如果查询语句中使用了order by ,请加上top 100 percent

《通过SQL语句直接实现Excel与数据库的导入导出》

@path
 
nvarchar
(
1000
),   

文件存放目录

《通过SQL语句直接实现Excel与数据库的导入导出》

@fname
 
nvarchar
(
250
),   

文件名

《通过SQL语句直接实现Excel与数据库的导入导出》

@sheetname
 
varchar
(
250
)
=

  

要创建的工作表名,默认为文件名

《通过SQL语句直接实现Excel与数据库的导入导出》

as
 
《通过SQL语句直接实现Excel与数据库的导入导出》

declare
 
@err
 
int
,
@src
 
nvarchar
(
255
),
@desc
 
nvarchar
(
255
),
@out
 
int

《通过SQL语句直接实现Excel与数据库的导入导出》

declare
 
@obj
 
int
,
@constr
 
nvarchar
(
1000
),
@sql
 
varchar
(
8000
),
@fdlist
 
varchar
(
8000
)
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》


参数检测

《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
isnull
(
@fname
,

)
=

 
set
 
@fname
=

temp.xls


《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
isnull
(
@sheetname
,

)
=

 
set
 
@sheetname
=
replace
(
@fname
,

.

,

#

)
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》


检查文件是否已经存在

《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
right
(
@path
,
1
)
<>



 
set
 
@path
=
@path
+




《通过SQL语句直接实现Excel与数据库的导入导出》

create
 
table
 #tb(a 
bit
,b 
bit
,c 
bit
)
《通过SQL语句直接实现Excel与数据库的导入导出》

set
 
@sql
=
@path
+
@fname

《通过SQL语句直接实现Excel与数据库的导入导出》

insert
 
into
 #tb 
exec
 master..xp_fileexist 
@sql

《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》


数据库创建语句

《通过SQL语句直接实现Excel与数据库的导入导出》

set
 
@sql
=
@path
+
@fname

《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
exists
(
select
 
1
 
from
 #tb 
where
 a
=
1
)
《通过SQL语句直接实现Excel与数据库的导入导出》 

set
 
@constr
=

DRIVER={Microsoft Excel Driver (*.xls)};DSN=
””
;READONLY=FALSE


《通过SQL语句直接实现Excel与数据库的导入导出》       

+

;CREATE_DB=”

+
@sql
+

“;DBQ=

+
@sql

《通过SQL语句直接实现Excel与数据库的导入导出》

else

《通过SQL语句直接实现Excel与数据库的导入导出》 

set
 
@constr
=

Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=”Excel 8.0;HDR=YES


《通过SQL语句直接实现Excel与数据库的导入导出》    

+

;DATABASE=

+
@sql
+




《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》


连接数据库

《通过SQL语句直接实现Excel与数据库的导入导出》

exec
 
@err
=
sp_oacreate 

adodb.connection

,
@obj
 out
《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
@err
<>
0
 
goto
 lberr
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

exec
 
@err
=
sp_oamethod 
@obj
,

open

,
null
,
@constr

《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
@err
<>
0
 
goto
 lberr
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》


创建表的SQL

《通过SQL语句直接实现Excel与数据库的导入导出》

declare
 
@tbname
 sysname
《通过SQL语句直接实现Excel与数据库的导入导出》

set
 
@tbname
=

##tmp_

+
convert
(
varchar
(
38
),
newid
())
《通过SQL语句直接实现Excel与数据库的导入导出》

set
 
@sql
=

select * into [

+
@tbname
+

] from(

+
@sqlstr
+

) a


《通过SQL语句直接实现Excel与数据库的导入导出》

exec
(
@sql
)
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

select
 
@sql
=

,
@fdlist
=


《通过SQL语句直接实现Excel与数据库的导入导出》

select
 
@fdlist
=
@fdlist
+

,[

+
a.name
+

]


《通过SQL语句直接实现Excel与数据库的导入导出》 ,

@sql
=
@sql
+

,[

+
a.name
+




《通过SQL语句直接实现Excel与数据库的导入导出》  

+
case
 
《通过SQL语句直接实现Excel与数据库的导入导出》   

when
 b.name 
like
 

%char

 
《通过SQL语句直接实现Excel与数据库的导入导出》   

then
 
case
 
when
 a.length
>
255
 
then
 

memo


《通过SQL语句直接实现Excel与数据库的导入导出》    

else
 

text(

+
cast
(a.length 
as
 
varchar
)
+

)

 
end

《通过SQL语句直接实现Excel与数据库的导入导出》   

when
 b.name 
like
 

%int

 
or
 b.name
=

bit

 
then
 

int


《通过SQL语句直接实现Excel与数据库的导入导出》   

when
 b.name 
like
 

%datetime

 
then
 

datetime


《通过SQL语句直接实现Excel与数据库的导入导出》   

when
 b.name 
like
 

%money

 
then
 

money


《通过SQL语句直接实现Excel与数据库的导入导出》   

when
 b.name 
like
 

%text

 
then
 

memo


《通过SQL语句直接实现Excel与数据库的导入导出》   

else
 b.name 
end

《通过SQL语句直接实现Excel与数据库的导入导出》

FROM
 tempdb..syscolumns a 
left
 
join
 tempdb..systypes b 
on
 a.xtype
=
b.xusertype
《通过SQL语句直接实现Excel与数据库的导入导出》

where
 b.name 
not
 
in
(

image

,

uniqueidentifier

,

sql_variant

,

varbinary

,

binary

,

timestamp

)
《通过SQL语句直接实现Excel与数据库的导入导出》 

and
 a.id
=
(
select
 id 
from
 tempdb..sysobjects 
where
 name
=
@tbname
)
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
@@rowcount
=
0
 
return

《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

select
 
@sql
=

create table [

+
@sheetname

《通过SQL语句直接实现Excel与数据库的导入导出》 

+

](

+
substring
(
@sql
,
2
,
8000
)
+

)


《通过SQL语句直接实现Excel与数据库的导入导出》 ,

@fdlist
=
substring
(
@fdlist
,
2
,
8000
)
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

exec
 
@err
=
sp_oamethod 
@obj
,

execute

,
@out
 out,
@sql

《通过SQL语句直接实现Excel与数据库的导入导出》

if
 
@err
<>
0
 
goto
 lberr
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

exec
 
@err
=
sp_oadestroy 
@obj

《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》


导入数据

《通过SQL语句直接实现Excel与数据库的导入导出》

set
 
@sql
=

openrowset(

MICROSOFT.JET.OLEDB.4.0

,

Excel 8.0;HDR=YES
《通过SQL语句直接实现Excel与数据库的导入导出》   ;DATABASE=


+
@path
+
@fname
+
”’
,[

+
@sheetname
+

$])


《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

exec
(

insert into 

+
@sql
+

(

+
@fdlist
+

) select 

+
@fdlist
+

 from [

+
@tbname
+

]

)
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

set
 
@sql
=

drop table [

+
@tbname
+

]


《通过SQL语句直接实现Excel与数据库的导入导出》

exec
(
@sql
)
《通过SQL语句直接实现Excel与数据库的导入导出》

return

《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》lberr:
《通过SQL语句直接实现Excel与数据库的导入导出》 

exec
 sp_oageterrorinfo 
0
,
@src
 out,
@desc
 out
《通过SQL语句直接实现Excel与数据库的导入导出》lbexit:
《通过SQL语句直接实现Excel与数据库的导入导出》 

select
 
cast
(
@err
 
as
 
varbinary
(
4
)) 
as
 错误号
《通过SQL语句直接实现Excel与数据库的导入导出》  ,

@src
 
as
 错误源,
@desc
 
as
 错误描述
《通过SQL语句直接实现Excel与数据库的导入导出》 

select
 
@sql
,
@constr
,
@fdlist

《通过SQL语句直接实现Excel与数据库的导入导出》

go

《通过SQL语句直接实现Excel与数据库的导入导出》

4.–在.net中导出到Excel的简单实例.

(1).添加引用Microsoft Excel 11.0 Object Library (在COM中)

(2).在web.config的上<system.web>里加

《通过SQL语句直接实现Excel与数据库的导入导出》
<
identity impersonate
=

true

/>
 
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

//
此句为了使用户能在本地打开文档,identify属性规定了身份验证的模式,一般情况下为false,这样安全性较高
《通过SQL语句直接实现Excel与数据库的导入导出》

(3).在Text.aspx上加Button1控件

(4).在cs页面添加 using Microsoft.Office.Interop.Excel;

(5).添加单击事件,在这里处理将数据库中的数据导入excel,代码如下:

《通过SQL语句直接实现Excel与数据库的导入导出》
//
定义方法GetData(),返回一个数据表 

《通过SQL语句直接实现Excel与数据库的导入导出》

private
 System.Data.DataTable GetData() 
《通过SQL语句直接实现Excel与数据库的导入导出》《通过SQL语句直接实现Excel与数据库的导入导出》



《通过SQL语句直接实现Excel与数据库的导入导出》      SqlConnection conn
= new SqlConnection(@”Server=XJIE;Initial Catalog=Northwind;Uid=sa;Pwd=xjie;); 
《通过SQL语句直接实现Excel与数据库的导入导出》      SqlDataAdapter adapter
= new SqlDataAdapter(select  CompanyName 用户名,ContactTitle 联系主题,Address 住宅地址,ContactName 联系人,Phone 电话,City 城市 from Customers order by CustomerID desc,conn); 
《通过SQL语句直接实现Excel与数据库的导入导出》      DataSet ds
= new DataSet(); 
《通过SQL语句直接实现Excel与数据库的导入导出》      
try 
《通过SQL语句直接实现Excel与数据库的导入导出》《通过SQL语句直接实现Excel与数据库的导入导出》      

《通过SQL语句直接实现Excel与数据库的导入导出》   adapter.Fill(ds,
Customer); 
《通过SQL语句直接实现Excel与数据库的导入导出》      }
 
《通过SQL语句直接实现Excel与数据库的导入导出》      
catch(Exception ex) 
《通过SQL语句直接实现Excel与数据库的导入导出》《通过SQL语句直接实现Excel与数据库的导入导出》      

《通过SQL语句直接实现Excel与数据库的导入导出》   MessageBox.Show(ex.ToString()); 
《通过SQL语句直接实现Excel与数据库的导入导出》      }
 
《通过SQL语句直接实现Excel与数据库的导入导出》      
return ds.Tables[0]; 
《通过SQL语句直接实现Excel与数据库的导入导出》}

 
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》

private
 
void
 Button1_Click(
object
 sender, System.EventArgs e) 
《通过SQL语句直接实现Excel与数据库的导入导出》《通过SQL语句直接实现Excel与数据库的导入导出》



《通过SQL语句直接实现Excel与数据库的导入导出》      Application excel
= new Application(); 
《通过SQL语句直接实现Excel与数据库的导入导出》      
int rowIndex=1
《通过SQL语句直接实现Excel与数据库的导入导出》      
int colIndex=0
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》      excel.Application.Workbooks.Add(
true); 
《通过SQL语句直接实现Excel与数据库的导入导出》     
《通过SQL语句直接实现Excel与数据库的导入导出》      DataTable table
=GetData(); 
《通过SQL语句直接实现Excel与数据库的导入导出》      
《通过SQL语句直接实现Excel与数据库的导入导出》      
//将所得到的表的列名,赋值给单元格 
《通过SQL语句直接实现Excel与数据库的导入导出》
      foreach(DataColumn col in table.Columns) 
《通过SQL语句直接实现Excel与数据库的导入导出》《通过SQL语句直接实现Excel与数据库的导入导出》      

《通过SQL语句直接实现Excel与数据库的导入导出》   colIndex
++;  
《通过SQL语句直接实现Excel与数据库的导入导出》   excel.Cells[
1,colIndex]=col.ColumnName;     
《通过SQL语句直接实现Excel与数据库的导入导出》      }
 
《通过SQL语句直接实现Excel与数据库的导入导出》
《通过SQL语句直接实现Excel与数据库的导入导出》      
//同样方法处理数据 
《通过SQL语句直接实现Excel与数据库的导入导出》
      foreach(DataRow row in table.Rows) 
《通过SQL语句直接实现Excel与数据库的导入导出》《通过SQL语句直接实现Excel与数据库的导入导出》      

《通过SQL语句直接实现Excel与数据库的导入导出》   rowIndex
++
《通过SQL语句直接实现Excel与数据库的导入导出》   colIndex
=0
《通过SQL语句直接实现Excel与数据库的导入导出》   
foreach(DataColumn col in table.Columns) 
《通过SQL语句直接实现Excel与数据库的导入导出》《通过SQL语句直接实现Excel与数据库的导入导出》   

《通过SQL语句直接实现Excel与数据库的导入导出》         colIndex
++
《通过SQL语句直接实现Excel与数据库的导入导出》         excel.Cells[rowIndex,colIndex]
=row[col.ColumnName].ToString(); 
《通过SQL语句直接实现Excel与数据库的导入导出》   }
 
《通过SQL语句直接实现Excel与数据库的导入导出》      }
 
《通过SQL语句直接实现Excel与数据库的导入导出》      
//不可见,即后台处理 
《通过SQL语句直接实现Excel与数据库的导入导出》
      excel.Visible=true
《通过SQL语句直接实现Excel与数据库的导入导出》}

 
《通过SQL语句直接实现Excel与数据库的导入导出》

    原文作者:SQL
    原文地址: https://blog.csdn.net/sophia09shen/article/details/973472
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞