M.S.Nayak Asked: 2012-01-06 22:49:03 +0800 CST2012-01-06 22:49:03 +0800 CST 2012-01-06 22:49:03 +0800 CST 将数据导出到excel 772 我想执行一些存储过程,并将结果导出到 Excel。怎么能做到这一点?我是 SQL 新手。任何有关此的帮助或教程将不胜感激。 sql-server-2008 excel 3 个回答 Voted Jason Cumberland 2012-01-07T00:20:09+08:002012-01-07T00:20:09+08:00 我知道的几种方法 在 ssms 中运行程序,然后将结果复制到 excel 中(确保在工具、选项、查询结果中打开复制列标题的选项) 创建 SQL Server 集成服务 (SSIS) 包以运行该过程并将结果写入 CDC 或 Excel 文件。 如果您有 SQL Server 报告服务 (SSRS),您可以创建一个报告来运行该过程并显示结果,然后您可以从报告网站将报告导出到 excel/csv。这也可以通过 SSRS 订阅来安排。 Best Answer Marian 2012-01-07T02:29:58+08:002012-01-07T02:29:58+08:00 您在上一个答案中发布了 3 种方法,或者您可以使用OPENROWSET或OPENDATASOURCE在纯 sql 中执行此操作。 一些例子: SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source=C:\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ; SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\TEST.xls;HDR=YES', 'select * from [Sheet1$]'); SSIS 和 SSRS 导入/导出方法都不太容易完成,尽管它们具有能够自动执行它们的优点,并且从 SSMS 输出的副本只是一种手动解决方案。OPENROWSET/OPENDATASOURCE 函数可以在过程或临时查询中更容易地调用。 Poseidon 2022-06-20T11:28:46+08:002022-06-20T11:28:46+08:00 您可以创建一个像 ##result 这样的全局临时表并将 proc 的结果插入其中,然后您可以在此处使用存储的 proc https://github.com/hossamaladdin/ExportToExcel将数据直接导出到 Excel 而不用担心像这样: drop table if exists ##mytable; create table ##mytable(col1 varchar(100),col2 varchar(100)) insert into ##mytable(col1,col2) exec sp_mystoredproc exec dbo.ExportToExcel @tablename= '##mytable' ,@filepath = 'c:\myfolder\' ,@filename = 'Excelfile.xlsx' 执行后,proc 将显示文件位置,您可以轻松访问它。 PS:您也可以使用参数@AttachToMail并将@MailList文件直接发送到您的电子邮件,但您需要先从 SQL Server 启用 db_mail
我知道的几种方法
您在上一个答案中发布了 3 种方法,或者您可以使用OPENROWSET或OPENDATASOURCE在纯 sql 中执行此操作。
一些例子:
SSIS 和 SSRS 导入/导出方法都不太容易完成,尽管它们具有能够自动执行它们的优点,并且从 SSMS 输出的副本只是一种手动解决方案。OPENROWSET/OPENDATASOURCE 函数可以在过程或临时查询中更容易地调用。
您可以创建一个像 ##result 这样的全局临时表并将 proc 的结果插入其中,然后您可以在此处使用存储的 proc https://github.com/hossamaladdin/ExportToExcel将数据直接导出到 Excel 而不用担心像这样:
执行后,proc 将显示文件位置,您可以轻松访问它。
PS:您也可以使用参数
@AttachToMail
并将@MailList
文件直接发送到您的电子邮件,但您需要先从 SQL Server 启用 db_mail