将 SQL Server 表导出到 Microsoft Excel xlsx 文件
Posted
技术标签:
【中文标题】将 SQL Server 表导出到 Microsoft Excel xlsx 文件【英文标题】:Export SQL Server table to Microsoft Excel xlsx file 【发布时间】:2016-04-18 15:18:19 【问题描述】:我必须替换一个允许使用 DAO 将 SQL Server 表导出到 xls 文件中的 VB6 函数。
为了使用 Excel 2007-2010... 文件 (xlsx),我尝试使用此功能来执行此操作,但它不起作用。
这是 DAO 功能:
//Opening the SQLServer database with DAO
Set oBase= DBEngine.OpenDatabase(DSNName, dbDriverNoPrompt, False, "ODBC,PROVIDER=Microsoft.JET.OLEDB.3.51;DSN=DSNName;UID=user;PWD=pwd;DATABASE=SQLServerBDDName;Server=SQLServerName;")
//Query to export data
oBase.Execute("SELECT * INTO [SheetName] IN 'xlsFileName' 'Microsoft Excel 8.0;' FROM [SQLServerTableName]")
此功能完美适用于 xls 中的 97-2003 Excel 文件,但不适用于 xlsx 文件。
是否有可能用 ADO 做同样的事情,但没有 OPENROWSET 语句或存储过程?
感谢您的帮助
【问题讨论】:
如果我通过 Excel 12.0 和提供程序 (Microsoft.ACE.OLEDB.12.0) 更改 Excel 8.0,我会遇到错误(未找到 ISAM 驱动程序)。我已经为另一个软件安装了 Access 驱动程序 12 support.microsoft.com/en-us/kb/247412 提供了很多不同的方法来做你想做的事。但是,DAO 不是其中之一。 DAO 在 1995 年就已经老了,那时 ADO 出来了。您可能需要更改为 ADO 以支持 Excel 12.0。如果是这样,这并不太难,并且链接中有一个示例。对于 ADO 连接字符串,请访问 www.connectionstrings.com。 感谢您,但使用我们的旧方法,我们可以在没有安装 Office 的情况下将数据从 sql server 导出到 xls 文件,只有使用 Jet 驱动程序。本网页中介绍的所有方法都需要 Excel 才能工作。 【参考方案1】:我终于找到了如何在 VB6 SQL Server 中导出到 Excel 2007 文件并安装了 ADO 和 不带 Office。
首先,我使用 ADO 创建 xlsx 文件:
Dim l_oBase As New ADODB.connection
l_oBase.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myExcelFile.xlsx;Extended Properties=""Excel 12.0 Xml"""
Call l_oBase.Open
然后我执行查询以通过使用 ODBC 连接和 DSN 连接到 SQL Server 数据库来导出工作表中的表:
l_sReq = "SELECT * INTO [mySheet] FROM [ODBC;DSN=MyDSN;UID=LoginSQL;PWD=pwdSQL;Server=mysqlServer;Database=myDatabase].[TableName];"
Call l_oBase.Execute(l_sReq)
Call l_oBase.Close
当我在调试模式下执行查询时,执行时出现错误,但 xlsx 文件已正确创建并填充了数据格式。
【讨论】:
以上是关于将 SQL Server 表导出到 Microsoft Excel xlsx 文件的主要内容,如果未能解决你的问题,请参考以下文章
需要将一个 150GB 的 SQL Server 表导出到多个管道分隔的平面文件中
将数据从平面文件加载到 Sql Server 表,并使用 SSIS 导出到 excel