我们知道,用以下的方法可以访问account文件里面的sheet1工作表,我想知道有没有办法在不清楚第一个工作表的具体名字的情况下,用OpenDataSource或者OPENROWSET来访问里面的数据?SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...sheet1
SELECT *
FROM OPENROWSET
('MICROSOFT.JET.OLEDB.4.0','EXCEL 8.0;DATABASE=c:\Finance\account.xls',sheet1$)
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...sheet1
SELECT *
FROM OPENROWSET
('MICROSOFT.JET.OLEDB.4.0','EXCEL 8.0;DATABASE=c:\Finance\account.xls',sheet1$)
解决方案 »
- 已知.frm,.MYD,.MYI 文件怎么导成数据库吗?
- SQL2005的所有实例完全卸载_异常头痛....
- 请教一个sql语句!!!!!!!!!!!!!!!!!!!!!!!!
- sql server 2008 报表无法部署
- SSIS问题,如何从FTP上下载不与上次下载重复的文件
- 下面的sql语句什么意思
- 灌水:谁知道nononono姓什莫?
- 谁用过SQL Server 2000 for Windows CE?
- 想从光盘的数据库中提取出所需要数据并重新建立新的数据库?
- delphi5 sql server 2000 parameters.ParamByName('RETURN_VALUE').Value
- sqlserver2005 表字段的设计
- 装了SQL2005后,连接变得好慢啊!
指出表名不行吗?
go
if(object_id('udf_getExcelTableNames') is not null)
drop function dbo.udf_getExcelTableNames
go
create function udf_getExcelTableNames(@filename varchar(1000))
returns @t table(id int,name varchar(255))
as
begin
declare
@error int,@obj int,@c int,@sheetname varchar(255) ,@sheetstring varchar(255)
exec @error=sp_oacreate 'Excel.Application',@obj out
exec @error=sp_oamethod @obj,'Workbooks.Open',@c out,@filename
exec @error=sp_oagetproperty @obj,'ActiveWorkbook.Sheets.Count',@c out
while(@c>0)
begin
set @sheetstring='ActiveWorkbook.Sheets('+ltrim(@c)+').Name'
exec @error=sp_oagetproperty @obj,@sheetstring,@sheetname out
insert into @t select @c,@sheetname
set @c=@c-1
end
exec @error=sp_oadestroy @obj
return
end
goselect * from dbo.udf_getExcelTableNames('e:\aa.xls')/*--测试结果
3 Sheet3
2 Sheet2
1 Sheet1
*/
http://blog.csdn.net/jinjazz/archive/2008/05/13/2441635.aspx
试了,遇到一个问题,在sql2000上运行可以得到结果,同一台机器,在sql2005上得到的确是空表,不知道是什么原因!
select @obj,'sp_oacreate'
return执行后select * from dbo.udf_getExcelTableNames('D:\附属资料\001.xls')在sql2000中返回
id name
---------------------------------
16711422 sp_oacreate在sql2005中返回
id name
----------- ------------------
NULL sp_oacreate很奇怪,因为是在同一台机器上,现在也分析不出原因