if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_excel_sheet]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_excel_sheet]
GO/*--得到 Excel 文件的所有工作表名

返回指定 Excel 文件的所有工作表名
这个利用了 SQL 自身的功能实现
不需要调用 Excel 对象,速度很快--邹建 2004.05--*//*--调用示例

exec p_excel_sheet 'c:\2.xls'
--*/
create proc p_excel_sheet
@fname nvarchar(260)
as
declare @srv_name sysname,@s nvarchar(4000)set nocount on
select @srv_name=cast(newid() as char(36))
,@s='Excel 8.0;IMEX=1;HDR=YES;DATABASE='+@fnameexec sp_addlinkedserver @server=@srv_name,@srvproduct=''
,@provider='MICROSOFT.JET.OLEDB.4.0',@provstr=@screate table #t(CAT sysname null,SCHEM sysname null,NAME sysname,TYPE varchar(32),REMARKS varchar(254))
insert #t exec sp_tables_ex @srv_nameexec sp_dropserver @srv_name,'droplogins'
select 工作表名=Name from #t where type='TABLE'
go