【问题标题】:How to export SQL queries to Excel where the Excel file does not yet exists?如何将 SQL 查询导出到 Excel 文件尚不存在的 Excel?
【发布时间】:2017-06-29 13:05:07
【问题描述】:

我进行了深入搜索,但似乎找不到答案。

我想将 SQL 查询导出到 Excel 并将其(excel)返回到客户端应用程序或我的 Web 服务。 (考虑类似FOR XML 的概念,而是返回二进制 Excel 数据)

我测试了这个(经过长时间的努力),它终于可以正常工作了:

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
'Excel 12.0;Database=D:\1.xls;', 
'SELECT * FROM [Sheet1$]') 
SELECT TOP 5 ID, ItemName FROM dbo.MyItems

并将其返回给客户:

SELECT * FROM OPENROWSET(BULK N'D:\1.xls', SINGLE_BLOB) rs

但是,文件D:\1.xls 必须已经存在。 我已经阅读了这个公认的答案:T-SQL: Export to new Excel file

4 如果您不想提前创建 EXCEL 文件并想 导出数据到它,使用EXEC sp_makewebtask

sp_makewebtask 已弃用。

有没有办法在没有现有文件的情况下完成这项任务?或者至少在导出之前动态创建一个合适的文件?甚至更好:根本不使用任何文件

谢谢。

【问题讨论】:

  • SSIS 在这些地方很方便。数据可以随时随地放在 Excel 上。
  • @PrabhatG,你能举个例子吗?
  • 原来使用Excel文件的原因是什么?如果您正在寻找一种不使用文件的方法,这是方式更容易
  • @Rominus,我想将 SQL 查询导出到 Excel 文件并在我的客户端应用程序中将它(excel)返回给客户端,而不是在客户端生成 Excel。

标签: sql-server excel sql-server-2008 tsql


【解决方案1】:

也许你可以在打电话之前尝试做这样的事情:

xp_cmdshell "echo . > D:\1.xls"

【讨论】:

    【解决方案2】:

    看起来您的代码的目的是将前 5 个项目名称移动到另一个表中?如果是这种情况,您只需要into

    SELECT TOP 5 ID, ItemName 
    INTO dbo.Othertable
    FROM dbo.MyItems
    

    【讨论】:

    • TOP 5 只是一个例子。我想将 SQL 查询导出到 Excel 文件并将其(excel)返回到我的客户端应用程序中的客户端,而不是在客户端生成 Excel。
    猜你喜欢
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2019-07-02
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多