html - SSMS中导出存储过程结果集到Excel

标签 html sql-server excel stored-procedures ssms

我正在使用 SSMS 并尝试将存储过程的结果导出到新的 Excel 文件。 SP 接受一个 int 参数,但我找不到在查询中调用它的方法。

最新成果-

EXEC sp_makewebtask 
    @outputfile = 'C:\Users\me\Documents\testing.xls', 
    @query = **ExportAsExcel** N'@id' = 123
    @colheaders =1, 
    @FixedFont=0,@lastupdated=0,@resultstitle='Testing details'

运行存储过程会产生两个数据表,我需要将它们放在不同的工作表上。你们中的任何人都可以建议一个更好的方法来解决这个问题吗?它甚至不需要自动化,我只需要获取正确的数据。 sp 名称在上面以粗体显示。

谢谢你的时间,

H

最佳答案

我建议您将存储过程拆分为两个过程,每个过程分别返回一个单独的表,并将它们调用到不同的工作表。

使用SQL向Excel返回数据的方法有很多种

这是我最喜欢的 code by Joshua (您不必使用参数):

  1. 选择 Excel 功能区上的“数据”选项卡,然后在“获取外部数据”组中选择“来自其他来源”下拉列表。然后选择“来自 Microsoft 查询”

  2. 在“选择数据源”弹出框中,选择您的 SQL Server,然后点击确定。

  3. 如有必要,关闭“添加表”弹出窗口。

  4. 单击“SQL”按钮,或选择“查看”>“SQL”以打开 SQL 弹出式编辑器。

  5. 输入以下语法:{CALL myDatabaseName.dbo.myStoredProc (?, ?, ?)}

    例如:{CALL northwind.dbo.spGetMaxCost (?, ?, ?)}

    请务必在调用语句周围包含波浪形大括号。每个问号 (?) 表示一个参数。如果您的存储过程需要更多或更少的参数,请根据需要添加或减去问号。

  6. 点击确定按钮。应弹出一个问题框,提示“无法以图形方式表示 SQL 查询,是否继续?”,只需点击确定按钮即可。

  7. 现在系统会要求您为上面包含的每个问号提供示例参数。为您正在查询的数据输入有效的参数值。

  8. 输入最后一个参数后,您应该会在 Microsoft Query 中返回一些结果。如果它们看起来不错,请关闭 Microsoft Query。

  9. 您现在应该会看到一个“导入数据”弹出窗口。单击“属性”按钮,弹出“连接属性”。

  10. 选择“定义”选项卡,然后选择“参数”按钮。您现在应该会看到一个“参数”弹出窗口,您可以在其中将参数连接到特定的单元格。

  11. 选择“从以下单元格中获取值”,然后单击带箭头的小框,连接到 Excel 中将保存您的参数的适当单元格。

  12. 如果您希望每次更改包含参数的单元格时都刷新数据,请选中“单元格值更改时自动刷新”复选框

  13. 其他参数按上述方法继续。完成后,单击“确定”以返回到“连接属性”弹出窗口。单击“确定”返回“导入数据”弹出窗口,然后再次单击“确定”。

  14. 您现在应该有一些直接来自存储过程的数据。

您最终会得到类似于以下的连接信息:

连接信息

而且,如果您使用工作表中的参数,那么以我的示例为例,

关于html - SSMS中导出存储过程结果集到Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49490189/

相关文章:

excel - VBA Excel 文件系统对象

excel - 在 Excel 中按列从 Web XML 表中抓取历史汇率

javascript - 使用 Jquery 连续淡化缩略图列表(始终只显示 4 个?)

javascript - 根据D3图中的节点位置调整链路起点和终点

sql-server - 尝试使用 VBA excel 运行 SQL 查询时出错

sql-server - TSQL - 按分组时间窗口查找行重复项 - 无游标

vba - 无法使用可用资源完成此任务粘贴临时表中的值

html - 将 Div 排列成字母

html - 我如何更改此 Bootstrap 以按照我需要的方式在 Joomla 上工作?

sql-server - 在 SQL Server 中处理带空格的列名