比如一张Excel文件里,有sheet1、sheet2、sheet3等等张Excel页,如何写SQL语句,返回这些Excel页,~~~~~急,在线等,问题解决,马上放分!!!!注意,不是查询某一张表的数据,而是返回表名,,,
解决方案 »
- 问下如何在这个ACTION方法传参数给监听器呢???
- 这样的语句怎么写,菜鸟求指教。
- 请问:怎么在数据库中找到索引的相关属性
- 多个主键外键的约束问题
- 疑问??如何将VARCHAR类型值如5678转化为5678.00即将转为带两位小数的数值??谢谢!
- 下面的sql在sqlserver中可以实现...access怎么实现?
- 关于两个表中的字段一对多的问题:
- 请教,如何用SQL将日期类型后的时间截掉?
- 触发器删除时出错!
- 将UNIX 下的Foxbase的数据库移植到Windows OS下的Visual Foxpro中?高手请指点
- sqlserver 2005数据库同步有什么好的解决方案
- 求一个sql语句
E盘根目录新建一个Excel文件aa.xls后测试如下代码use tempdb
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
go select * from dbo .udf_getExcelTableNames ('e:\aa.xls' )/*--测试结果
3 Sheet3
2 Sheet2
1 Sheet1
*/ 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jinjazz/archive/2009/08/31/4503535.aspx
( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\test2.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...[sheet1$]
测试没问题
drop function [dbo].[f_sheetname]
GO /*--得到Excel文件中的所有工作表名 --邹建 2004.04--*/ /*--调用示例
select * from f_sheetname( 'c:\a.xls ')
--*/
create function f_sheetname(
@ExcelFname nvarchar(260)
)returns @re table(id int identity(1,1),sheetname nvarchar(100))
as
begin
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 lb_err exec @err=sp_oamethod @obj, 'Workbooks.Open '
,@icount out
,@ExcelFname
if @err <> 0 goto lb_err exec @err=sp_oagetproperty @obj, 'ActiveWorkbook.Sheets.Count ',@icount out
if @err <> 0 goto lb_err
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 lb_err
insert @re values(@sheetname)
set @icount=@icount-1
end exec @err=sp_oadestroy @obj
goto lb_re lb_err:
exec sp_oageterrorinfo 0,@src out,@desc out
insert @re
select cast(@err as varbinary(4)) as 错误号
union all select @src as 错误源
union all select @desc as 错误描述
lb_re:
return
end
go
消息 229,级别 14,状态 5,第 1 行
拒绝了对对象 'sp_OACreate' (数据库 'mssqlsystemresource',架构 'sys')的 EXECUTE 权限。
====???