我正在使用以下查询将SQL结果传输到现有的Excel文件。是否可以将它们转移到新的Excel工作表?使用SSIS我们可以做到这一点,但我想知道SSMS是否有可能做到这一点。
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 :(得分: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())
您可以根据需要动态更改新文件的名称,“创建”它,然后用预期数据填充它。