我以前做了一个WEB程序,是把EXCEL表上传到服务器,然后再把EXCEL表中的数据导入数据库,也是在网上查的SQL导入导出语句资料,别的都试了不好使,就下面写的这种好使, sql = "SELECT * INTO " + ttxt + " FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=" + filename + "', [" + stxt + "$])"; 不知道为什么,ttxt,filename还有stxt都是程序里的变量,其中stxt是EXCEL表中的工作薄名如:Sheet1,Sheet2等,以前用着挺好,现在领导让我改,改成那种一次可以上传多个工作薄的,以前那个只能上传一个工作薄嘛,上网查也没查到,都是以前用过不好用的,以前那个是上传一个工作薄,再上传可以把以前的覆盖的嘛,现在要求新建表的时候是上传一个表的多个工作薄,更新的时候可以上传原表(里面加了数据)覆盖原有数据,也可以是一个新的EXCEL表追加到数据表中。一个头两个大,如果我没说明白,可以再问,强人们一定要帮我解决了呀,郁闷中,如果解决再追加50分,跪求。在线等!
Sheet1
col1 col2 col3
a d a
b e s
c f c
Sheet2
col1 col2 col3
a d a
b e s
c f c
Sheet3
col1 col2 col3
a d a
b e s
c f c
先建表
create table testxls
(
col1 varchar(10),
col2 varchar(10),
col3 varchar(10)
)
插入
declare @a varchar(20),
@sql varchar(8000)
set @a='Sheet1$'----Sheet2$,3$同理,用动态SQL语句
set @sql='
insert into
testxls select * from openrowset(''MICROSOFT.JET.OLEDB.4.0'',
''Excel 5.0;HDR=YES;DATABASE=C:\test.xls'','+@a+')'
print @sql
exec(@sql)
from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;database=c:\book1.xls;','[Sheet1$]')
以前这个在2000上是好使的,现在2005上执行出现的错误是这样的:消息 15281,级别 16,状态 1,第 1 行
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。 然后根据它的提示,进行了修改,还是不好使,帮我先整整这个吧,这个好使了,你给我语句才能好使,呵呵,帮帮忙吗?下班了,我回家等。