2

我想将查询中的数据导出到 excel 文件。我知道这里有很多这样的问题,但在我的情况下没有一个是可以接受的。

例如,像这个主题使用 OPENROWSET:T-SQL: Export to new Excel file

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=D:\testing.xls;', 
'SELECT * FROM [SheetName$]') select * from SQLServerTable

它只有在我自己创建 testing.xls 时才能成功执行,并且还准确定义了将从我的查询中导出的列数在这个 excel 文件中。否则,会发生错误:列名或提供的值的数量与表定义不匹配。

我也在这里尝试另一种解决方案:http : //weblogs.sqlteam.com/mladenp/archive/2006/07/25/10771.aspx using Exec master..xp_cmdshell

它确实有效,但是,我听说 xp_cmdshell 对 SQL Server 来说是一个很大的安全威胁。所以,也许我不应该使用它。

我还有其他方法可以尝试吗?

4

2 回答 2

1

如果您正在寻找一个快速而肮脏的解决方案,您可以使用 Management Studio 本身。

以下是步骤:

  • 编写您的查询并运行它
  • 右键单击结果窗格并选择“将结果另存为...”
  • 选择您的文件夹/文件名并确保在下方选择了 CSV 类型
  • 现在使用 Excel 打开您的 CSV 文件;如果合适,将其保存为 Excel 中的原生 Excel 格式

如果您需要编程解决方案,那将无济于事,在这种情况下,您必须使用 Microsoft (Microsoft.Office.Interop.Excel) 或第 3 方解决方案;您甚至可以使用 Office Open XML 构建一个

如果您需要 TSQL 解决方案,您在问题中提到的 OPENROWSET 应该没问题。

您可以使用仅 Excel 解决方案并使用 Excel 本身中的数据窗格导入数据(从 SQL 服务器导入)。

不必与 SQL Server 或 Excel 本身耦合的另一种可能性是Powershell。但是,我不喜欢 Powershell,所以如果您更喜欢这种方法,您将不得不进行更多调查。

此外,有点过时但有趣的阅读。

于 2013-07-31T05:15:56.357 回答
0

尝试为此使用更新版本的 Excel。从您的查询看来,您使用的是 Excel 97——这个版本中可能存在大量错误和不兼容性。

如果这没有帮助,其他选项是: - 像 Ozren 建议的那样从 SSSM 手动执行 - 尝试为此创建 SSIS 包

这里有几个其他线程可以帮助您入门

http://www.connectionstrings.com/excel/

如何将 SQL Server 2005 数据传输或导出到 Excel

将 SQL 查询数据导出到 Excel

于 2013-07-31T09:01:33.270 回答