2017-07-27 9 views
1

以下のクエリを使用してSQL結果を既存のExcelファイルに転送します。それらを新しいExcelシートに転送することは可能ですか? SSISを使用してこれを行うことができますが、SSMSで実行する可能性があるかどうかを知りたいと思います。MS SQL結果を新しいMS Excelファイルに転送できますか?

SP_CONFIGURE 'show advanced options', 1 
RECONFIGURE WITH OVERRIDE 
GO 

SP_CONFIGURE 'Database Mail XPs', 1 
RECONFIGURE WITH OVERRIDE 
GO 

EXEC sp_configure 'ad hoc distributed queries', 1 
RECONFIGURE 
GO 
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 

INSERT INTO OPENROWSET 
    ('Microsoft.ACE.OLEDB.12.0', 
    'Excel 8.0;Database=E:\LessThan1300\OutofScope.xlsx;','select * from [Sheet1$]') 
    select * from tboutofscope 
    where InflowDate >= CONVERT(date,getdate()) 
+0

私の知る限り、あなたの質問は素晴らしいです。ここに何かエラーがありますか?ファイル内にSheet1という名前のシートがありますか?それはSQLサーバーのE:ドライブにありますか、またはネットワークパスが必要ですか?あなたはクエリで新しいシートを作成しようとしていますか? –

+2

既存のワークシートがある場合、このクエリは正常に動作します。新しいエクセルファイルにも同じことをしたい。 – Madhukar

+2

これは進行中のExcelレポートですか?パワークエリーの使用について考えましたか? – Isaiah3015

答えて

2

あなたはこのようなあなたのテンプレートファイルのコピーを作成することができます。

DECLARE @sqlscript VARCHAR(4000), @pathtotemplatefile VARCHAR(MAX) = 'E:\LessThan1300\template.xlsx', @pathtonewfile VARCHAR(MAX) = 'E:\LessThan1300\OutofScope.xlsx', @xlsxdatabase varchar(4000) 
--SET @pathtotemplatefile = 'c:\i\1.xlsx' 
--SET @pathtonewfile = 'c:\i\2.xlsx' 
SET @sqlscript='copy ' + @pathtotemplatefile + ' ' + @pathtonewfile 
EXECUTE master..xp_cmdshell @sqlscript, no_output 

set @xlsxdatabase = 'Excel 8.0;Database=' + @pathtonewfile + ';' 

INSERT INTO OPENROWSET 
    ('Microsoft.ACE.OLEDB.12.0', @xlsxdatabase,'select * from [Sheet1$]') 
    select * from tboutofscope 
    where InflowDate >= CONVERT(date,getdate()) 

あなたはそれを動的に「作成」、ニーズに応じて、新しいファイルの名前を変更し、期待とそれを埋めることができますデータ。

+1

ありがとうございます。テンプレートファイルの内容は新しいファイルにコピーされます。私は 'コピー'を '移動'に変更した後、テンプレートが削除され、新しいファイルが作成されています。どのような方法で私はちょうど新しいファイルにクエリの結果をダンプすることができますか? – Madhukar

+1

新しい空のxlsxファイルをテンプレートとして作成するか、OutofScope.xlsxファイルからすべての行を削除して "OutofScope_template.xlsx"という名前を付けて、それをOutofScope.xlsxに使用する(コピーする)あなたの輸出のために新しいファイルが必要なときはいつでも。テンプレートファイルは、変更を行わずにその場所に保持する必要があります。 –

+0

私はこれを試しました。しかし、テンプレートファイルの内容は移動しません。 – Madhukar

関連する問題