如果你的excel文件和sql不在同一台电脑.可以共享excel文件所在的目录,然后用类似下面的语句:select * into #t from OPENROWSET('MICROSOFT.JET.OLEDB.4.0', 'Excel .0;HDR=YES;DATABASE=\\计算机名\共享目录名\test.xls',sheet1$)
我把文件拷到sql server所在的机器上以后.出错了: 服务器: 消息 7314,级别 16,状态 1,行 1 OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 不包含表 'sheet1$'。该表可能不存在,或当前用户没有使用该表的权限。
我没有改那个excel的呀,表sheet1$也有的
也可以借助access来做中间过程.方法如下下: 打开access,随机打开一个数据库,没有的话就新建一个空库 然后点查询--新建--设计视图--再在菜单--视图中选择sql视图然后输入下面的查询语句,并执行就行了.(注意根据你的情况做适当调整)select * into [ODBC;Driver=SQL Server;Server=SQL服务器名;Uid=用户名;Pwd=密码;database=数据库名].要生成的表名 FROM [Excel 5.0;HDR=YES;DATABASE=F:\test.xls].[sheet1$];
sheet1是工作表名,$是在SQL中查询需要加的一个符号select * into #t from OPENROWSET('MICROSOFT.JET.OLEDB.4.0', 'Excel .0;HDR=YES;DATABASE=\\计算机名\共享目录名\test.xls',[sheet1$])
--用下面的语句测试一下,看你的excel中有那些工作表--得到Excel文件中的所有工作表名declare @err int,@src varchar(255),@desc varchar(255) declare @obj int,@icount int,@sheetname varchar(200)exec @err=sp_oacreate 'Excel.Application',@obj out if @err<>0 goto lberrexec @err=sp_oamethod @obj,'Workbooks.Open',@icount out,'c:\csdn.xls' --你的Excel文件名 if @err<>0 goto lberrexec @err=sp_oagetproperty @obj,'ActiveWorkbook.Sheets.Count',@icount out if @err<>0 goto lberr select @icount while @icount>0 begin set @src='ActiveWorkbook.Sheets('+cast(@icount as varchar)+').Name' exec @err=sp_oagetproperty @obj,@src,@sheetname out if @err<>0 goto lberr print @sheetname set @icount=@icount-1 endexec @err=sp_oadestroy @obj returnlberr: exec sp_oageterrorinfo 0,@src out,@desc out select cast(@err as varbinary(4)) as 错误号 ,@src as 错误源,@desc as 错误描述
我把它改成这样: select * into #t from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=\\mycomputer\test\test.xls',sheet1$) 还是出错了: 服务器: 消息 7399,级别 16,状态 1,行 1 OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 报错。提供程序未给出有关错误的任何信息。
错误号:0x800A03EC 错误源:Microsoft Excel 错误描述: Microsoft Excel 无法找到“\\mycomputer\test\test.xls”。请检查工作簿名称的拼写,并确认文件位置是否正确。 如果是
是放在本地机器上的
只要放在sql server所在机器就行了吗
有没有办法不放在本地机器上就能导入啊
from OPENROWSET('MICROSOFT.JET.OLEDB.4.0',
'Excel .0;HDR=YES;DATABASE=\\计算机名\共享目录名\test.xls',sheet1$)
服务器: 消息 7314,级别 16,状态 1,行 1
OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 不包含表 'sheet1$'。该表可能不存在,或当前用户没有使用该表的权限。
打开access,随机打开一个数据库,没有的话就新建一个空库
然后点查询--新建--设计视图--再在菜单--视图中选择sql视图然后输入下面的查询语句,并执行就行了.(注意根据你的情况做适当调整)select * into
[ODBC;Driver=SQL Server;Server=SQL服务器名;Uid=用户名;Pwd=密码;database=数据库名].要生成的表名
FROM [Excel 5.0;HDR=YES;DATABASE=F:\test.xls].[sheet1$];
from OPENROWSET('MICROSOFT.JET.OLEDB.4.0',
'Excel .0;HDR=YES;DATABASE=\\计算机名\共享目录名\test.xls',[sheet1$])
declare @obj int,@icount int,@sheetname varchar(200)exec @err=sp_oacreate 'Excel.Application',@obj out
if @err<>0 goto lberrexec @err=sp_oamethod @obj,'Workbooks.Open',@icount out,'c:\csdn.xls' --你的Excel文件名
if @err<>0 goto lberrexec @err=sp_oagetproperty @obj,'ActiveWorkbook.Sheets.Count',@icount out
if @err<>0 goto lberr
select @icount
while @icount>0
begin
set @src='ActiveWorkbook.Sheets('+cast(@icount as varchar)+').Name'
exec @err=sp_oagetproperty @obj,@src,@sheetname out
if @err<>0 goto lberr
print @sheetname
set @icount=@icount-1
endexec @err=sp_oadestroy @obj
returnlberr:
exec sp_oageterrorinfo 0,@src out,@desc out
select cast(@err as varbinary(4)) as 错误号
,@src as 错误源,@desc as 错误描述
select * into #t from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=\\mycomputer\test\test.xls',sheet1$)
还是出错了:
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 报错。提供程序未给出有关错误的任何信息。
错误源:Microsoft Excel
错误描述:
Microsoft Excel 无法找到“\\mycomputer\test\test.xls”。请检查工作簿名称的拼写,并确认文件位置是否正确。 如果是
exec @err=sp_oamethod @obj,'Workbooks.Open',@icount out,'e:\csdn.xls'
还是
错误号:0x800A03EC
错误源:Microsoft Excel
错误描述:
Microsoft Excel 无法找到“e:\test.xls”。请检查工作簿名称的拼写,并确认文件位置是否正确。 如果是