我不擅长 SQL,需要一些帮助。我有一个 SQL2005 服务器,我创建了一个作业来发送带有 CSV 附件的电子邮件。我的工作运行良好,但我需要最终结果是 .xls 或 .xlsx 格式的 Excel 文件。
这是作业的代码:
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;
我需要更改什么以及在哪里以我需要的格式获取数据?我必须修改我的SP吗?
tl; dr我认为您想要的不是您可用工具的选项。
我不相信使用 SQL 2005 可以将数据导出为 .xls 或 .xlsx 格式。
多年来,我尝试使用几种不同的工具来做到这一点。我没有选择不同工具的选项。
无论如何,对于大多数窗口设备,打开 .csv 文件都会在 Excel 中打开它。通常 .csv 文件在物理上比 .xls 或 .xlsx 文件要小,因此将其保留为 .csv 有一些好处。
获得 .csv 文件后,您可以使用 Excel 打开它并将其另存为 .xls 或 .xlsx。我认为这是你唯一的选择。
更新这超出了问题的参数,但值得一提:有一个 PowerShell 模块dfinke/ImportExcel,即使您的机器上没有 Excel,也可以将表格数据转换为 Excel,并放入文件夹中。我在Dbatools的演示中看到了这一点,它看起来非常有趣。