我是想取得指定excel檔案內的sheet數及每一個sheet的列數,參考了下面的命令,但出現了問題
——————————————————————————————————————
--在SQL Server中獲取Excel檔案中所有Sheet作業表的名稱
--創建一個函式:
use SSQ
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_sheetname]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_sheetname]
GO
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='https://bbs.csdn.net/topics/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
——————————————————————————————————————
我執行了
select * from f_sheetname('f:\aa.xls')
但回傳
1 €
2 Microsoft Excel
3 Microsoft Excel 不能訪問檔案“f:\aa.xls”。 可能的原因有以下幾個: ? 檔案名稱或路徑不存在。 ? 檔案正被其他程式使用。 ? 您正要保存的作業簿與當前打開的作業簿同名。
我使用下面的命令測驗是正常的
select * from opendatasource('Microsoft.ACE.OLEDB.12.0','data source="f:\aa.xls";Extended Properties=Excel 12.0')...[sheet3$]
uj5u.com熱心網友回復:
不要沉呀,頂起uj5u.com熱心網友回復:
還望各位牛人大大不吝賜教
uj5u.com熱心網友回復:
不要沉呀,頂起轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/11370.html
標籤:疑難問題
上一篇:這兩天在網上找了很久都沒有找到關于進銷存中 各業務的成本推算的sql.
下一篇:SqlSever2012
