在SQL Server中擷取Excel檔案中所有Sheet工作表的名稱

來源:互聯網
上載者:User

建立一個函數:

代碼

 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='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('c:\a.xls') 
--查詢出的欄位名包括id、sheetname  

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.