将数据从SQL Server查询导出到excel

时间:2013-07-31 03:26:48

标签: sql-server security export-to-excel

我想将查询中的数据导出到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使用Exec master..xp_cmdshell

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

我还有其他办法吗?

2 个答案:

答案 0 :(得分:1)

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

以下是步骤:

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

如果您需要程序化解决方案,那将无济于事,在这种情况下您必须使用Microsoft(Microsoft.Office.Interop.Excel)或第三方解决方案;你甚至可以build one using Office Open XML

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

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

另一种可能性不必与SQL Server或Excel本身耦合Powershell。但是,我没有进入Powershell,所以如果你更喜欢这种方法,你将需要进一步研究。

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

答案 1 :(得分:0)

尝试使用较新版本的Excel。从您的查询看起来您使用的是Excel 97 - 此版本中可能存在大量的错误和不兼容性。

如果这对其他选项没有帮助: - 像Ozren建议的那样从SSSM手动完成 - 尝试为此

创建SSIS包

以下是其他几个让你入门的主题

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

How do you transfer or export SQL Server 2005 data to Excel

Export SQL query data to Excel