Frequentemente precisamos fazer exportações de dados para o excel. É claro que podemos fazer essas exportações utilizando o DTS ou o atual SSIS. Mas que tal fazer a exportação utilizando uma instrução SQL, mais fácil de ser disparada do que os pacotes de exportação ?

A função OpenRowSet permite que sejam feitos acessos a outros bancos de dados mesmo que estes não estejam cadastrados como linked servers. Funciona como um linked server inline.

Desta forma podemos fazer uma exportação para o excel em uma única instrução, veja :

1
2
3
4
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\teste.xls;User=Admin;Password=',
'SELECT ID, Empresa FROM [Sheet1$]')
SELECT customerid,companyname FROM customers

Algumas observações :

A planilha do excel (no exemplo teste.xls) tem que já existir com os cabeçalhos de campo, do contrário ocorre um erro

Permissões no diretório temporário do usuário do serviço do sql server/sql server agent são necessárias. Os seguintes links ajudam no caso de ocorrerem erros estranhos : http://support.microsoft.com/kb/814398/en-us e http://support.microsoft.com/kb/296711/EN-US/

Abraços

Tomás Vásquez
http://www.tomasvasquez.com.br

Fonte: http://www.bufaloinfo.com.br/