我成功地使用以下语句将数据导出到Excel:
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\template.xls;',
'SELECT * FROM [SheetName$]')
select * from myTable
有没有标准的方法可以使用此模板指定一个新的Excel工作表名称,以便模板永远不会被写入,还是我必须想出一些解决方法?
根据人们的经验,最好的方法是什么?
我成功地使用以下语句将数据导出到Excel:
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\template.xls;',
'SELECT * FROM [SheetName$]')
select * from myTable
有没有标准的方法可以使用此模板指定一个新的Excel工作表名称,以便模板永远不会被写入,还是我必须想出一些解决方法?
根据人们的经验,最好的方法是什么?
您需要使用动态SQL。 OPENROWSET
等只允许参数为字面量。
DECLARE @myfile varchar(800)
SET @myfile = 'C:\template.xls'
EXEC ('
insert into OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',
''Excel 8.0;Database=' + @myfile + ';'',
''SELECT * FROM [SheetName$]'')
select * from myTable
')
你不能先复制一份模板,然后将复制文件的文件名传递给OPENROWSET吗?
您可以在一个位置使用模板,在另一个位置使用数据文件。 当您运行脚本时,它将删除旧文件并生成新的数据文件。
EXEC xp_cmdshell 'del D:\template.xls'
EXEC xp_cmdshell 'copy C:\template.xls D:\template.xls'
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\template.xls;',
'SELECT * FROM [SheetName$]')
SELECT * FROM myTable