将SQL Server表导出到Microsoft Excel xlsx文件

时间:2016-04-18 15:18:20

标签: sql-server excel vb6

我必须替换一个允许使用DAO在xls文件中导出SQL Server表的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语句或存储过程?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我终于找到了如何在VB6中使用ADO导出到Excel 2007文件,并安装了 WITHOUT 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文件已正确创建并填充了数据格式。