取得指定excel文件内的sheet数及每一个sheet的列数

取得指定excel文件内的sheet数及每一个sheet的列数

 

 

 

---------------------------------------------------------

-- happyflystone

-- 2010.04

-- 转载注明出处--->http://blog.csdn.net/happyflystone

-- 取得指定excel文件内的sheet数及每一个sheet的列数。

------------------------------------------------------

 

 

CREATE PROC sp_operate_excel

@excelfilename NVARCHAR(100),

@strErrorMessage VARCHAR(1000) OUT

AS

BEGIN

    SET NOCOUNT ON

    DECLARE @hr INT;

    DECLARE @objExcel INT;

    DECLARE @objWorkBooks INT;

    DECLARE @objWorkBook INT;

    DECLARE @cmd NVARCHAR(4000);

    DECLARE @i INT,@j int;

    DECLARE @IndexCount int;

    DECLARE @sheetname varchar (255 ) ;

    SET @strErrorMessage = '';

    DECLARE @tb TABLE(id INT identity,sheetname VARCHAR(100),colnums int);

    --创建Excel.Application对象

    EXEC @hr = sp_OACreate 'Excel.Application',@objExcel OUTPUT;

    IF @hr = 0

    BEGIN

       --创建Workbooks对象

        EXEC @hr = sp_OAGetProperty @objExcel,'Workbooks',@objWorkbooks OUTPUT;

        IF @hr = 0

        BEGIN

           --分解

           

           --打开Excel文件

           SET @cmd = 'Open("'+@excelfilename+'")';

           EXEC @hr = sp_OAMethod @objWorkbooks,@cmd,@objWorkBook OUTPUT;

           IF @hr = 0

           BEGIN

               SET @i = 1;

               EXEC @hr = sp_oagetproperty @objWorkbook , 'Sheets.Count' , @IndexCount OUT

               --循环多少个Sheet

               WHILE @i <= @IndexCount

               BEGIN

                   SET @cmd = 'Sheets('+ltrim(@i)+').Name';

                   EXEC @hr = sp_OAGetProperty @objWorkbook,@cmd,@sheetname OUT--@objSheet OUTPUT;

     

                   SET @cmd = 'Sheets('+ltrim(@i)+').UsedRange.Columns.Count'

                   EXEC @hr = sp_OAGetProperty @objWorkbook,@cmd,@j OUTPUT;

       

                    INSERT @tb SELECT @sheetname,@j                

                   SET @i = @i +1;          

               END       

           END

        END

       ELSE

             SET @strErrorMessage = '创建工作薄对象失败!';

    END

    ELSE

       SET @strErrorMessage = '创建Excel对象失败!'

   

    IF @hr = 0

        EXEC @hr = sp_OAMethod @objExcel,'Quit';

   

    --消除Excel对象

    IF @hr = 0

        EXEC @hr = sp_OADestroy @objWorkbooks;

   

    IF @hr = 0

        EXEC @hr = sp_OADestroy @objExcel;

    select * from @tb

END

GO

 

 

DECLARE @RET VARCHAR(100)

EXEC sp_operate_excel 'C:/BOOK1.XLS',@RET OUT

 

/*

id          sheetname       colnums    

----------- ------------ -----------

1           Sheet1            4

2           Sheet2            2

3           Sheet3            5

 

*/

 

DROP PROC  sp_operate_excel

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值