通过TSQL存储过程创建xlsx文件

时间:2019-01-31 06:33:59

标签: sql sql-server tsql sql-server-2014 xlsx

我正在尝试从TSQL存储过程创建xlsx(新格式)文件,但找不到解决方案。目前,我正在尝试使用以下代码: 编辑:我正在使用MSSQL 2014。

CREATE PROCEDURE spExecute_ADODB_SQL 
@DDL VARCHAR(2000), 
@DataSource VARCHAR(100), 
@Worksheet VARCHAR(100)=NULL, 
@ConnectionString VARCHAR(255) 
    = 'Provider=Microsoft.ACE.OLEDB.12.0; 
Data Source=%DataSource; 
Extended Properties=Excel 12.0' 
AS 
DECLARE 
    @objExcel INT, 
    @hr INT, 
    @command VARCHAR(255), 
    @strErrorMessage VARCHAR(255), 
    @objErrorObject INT, 
    @objConnection INT, 
    @bucket INT 


SELECT @ConnectionString 
    =REPLACE (@ConnectionString, '%DataSource', @DataSource) 
IF @Worksheet IS NOT NULL 
    SELECT @DDL=REPLACE(@DDL,'%worksheet',@Worksheet) 


SELECT @strErrorMessage='Making ADODB connection ', 
            @objErrorObject=NULL 
EXEC @hr=sp_OACreate 'ADODB.Connection', @objconnection OUT 
IF @hr=0 
    SELECT @strErrorMessage='Assigning ConnectionString property "' 
            + @ConnectionString + '"', 
            @objErrorObject=@objconnection 
IF @hr=0 EXEC @hr=sp_OASetProperty @objconnection, 
            'ConnectionString', @ConnectionString 
IF @hr=0 SELECT @strErrorMessage 
        ='Opening Connection to XLS, for file Create or Append' 
IF @hr=0 EXEC @hr=sp_OAMethod @objconnection, 'Open' 
IF @hr=0 SELECT @strErrorMessage 
        ='Executing DDL "'+@DDL+'"' 
IF @hr=0 EXEC @hr=sp_OAMethod @objconnection, 'Execute', 
        @Bucket out , @DDL 
IF @hr<>0 
    BEGIN 
    DECLARE 
        @Source VARCHAR(255), 
        @Description VARCHAR(255), 
        @Helpfile VARCHAR(255), 
        @HelpID INT 

    EXECUTE sp_OAGetErrorInfo @objErrorObject, @source output, 
        @Description output,@Helpfile output,@HelpID output 
    SELECT @strErrorMessage='Error whilst ' 
        +COALESCE(@strErrorMessage,'doing something')+', ' 
        +COALESCE(@Description,'') 
    RAISERROR (@strErrorMessage,16,1) 
    END 
EXEC @hr=sp_OADestroy @objconnection 
GO 



spExecute_ADODB_SQL @DDL='Create table CambridgePubs 
(Pubname Text, Address Text, Postcode Text)', 
@DataSource ='R:\ExportPriceList\CambridgePubs1.xlsx' 

它正在创建xlsx文件,但是当我尝试打开它时,它不起作用,并说格式不正确。有什么想法吗?

0 个答案:

没有答案