Eu não sou hábil em SQL e preciso de alguma ajuda. Tenho um servidor SQL2005 e criei um job para enviar um email com um anexo CSV. Meu trabalho funciona bem, mas preciso que o resultado final seja um arquivo do Excel no formato .xls ou .xlsx.
Segue o código do trabalho:
USE My_DB
GO
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DBMail'
,@recipients = 'me@my_org.com'
,@copy_recipients = ''
,@execute_query_database = 'My_DB'
,@query = 'exec MY_RPT_MonthlyWIPSp'
--@body =@bodyContent
,@subject = 'Monthly WIP Report'
,@attach_query_result_as_file = 1
,@query_attachment_filename = 'result.csv'
,@query_result_separator=',',@query_result_width =32767
,@query_result_no_padding=1;
O que eu preciso mudar e onde conseguir que os dados saiam no formato que eu preciso? Tenho que modificar meu SP?
tl;dr Eu não acho que o que você quer seja uma opção com as ferramentas que você tem disponível.
Eu não acredito que seja possível com o SQL 2005, realmente ter seus dados exportados no formato .xls ou .xlsx.
Ao longo dos anos, tentei com várias ferramentas diferentes fazer exatamente isso. Não tive a opção de selecionar ferramentas diferentes.
De qualquer forma, para a maioria dos dispositivos de janela, abrir um arquivo .csv o abrirá no Excel. Normalmente, o arquivo .csv é fisicamente menor do que seria como .xls ou .xlsx, portanto, há alguns benefícios em mantê-lo .csv.
Depois de ter o arquivo .csv, você pode abri-lo com o Excel e salvá-lo como .xls ou .xlsx. Acho que essa é sua única opção.
Update Isso está fora dos parâmetros da pergunta, mas vale a pena mencionar: Existe um módulo do PowerShell dfinke/ImportExcel que permitirá converter os dados da tabela para o Excel mesmo que você não tenha o Excel na máquina e coloque em uma pasta. Eu vi isso em uma demonstração do Dbatools e parece muito interessante.