2016-04-18 10 views
0

Мне нужно заменить функцию VB6, которая позволяет экспортировать таблицу SQL Server в файл xls с помощью DAO.Экспорт таблицы SQL Server в файл Microsoft Excel xlsx

Чтобы использовать Excel 2007-2010 ... файлы (xlsx), я попытался использовать эту функцию для этого, но это не сработает.

Вот DAO functionnality:

//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]") 

Эта функция отлично работает с файлами Excel 97-2003 в XLS, но не с XLSX файлов.

Есть ли возможность сделать то же самое с ADO, но без инструкций OPENROWSET или хранимых процедур?

Спасибо за вашу помощь

+0

Что происходит? – Rob

+0

Если я изменил Excel 8.0 на Excel 12.0 и поставщика (Microsoft.ACE.OLEDB.12.0), у меня есть ошибка (драйверы ISAM не найдены). Я уже установил драйвер доступа 12 для другого программного обеспечения – user1069516

+0

https://support.microsoft.com/en-us/kb/247412 предоставляет множество способов сделать то, что вы хотите. Однако DAO не является одним из них. DAO был старым в 1995 году, когда вышел ADO. Возможно, вам придется перейти на ADO для поддержки Excel 12.0. Если это так, это не слишком сложно, и в ссылке есть пример. Для строк подключения ADO посетите сайт www.connectionstrings.com. – BobRodes

ответ

0

я наконец-то нашел, как сделать в VB6 экспорта SQL Server в Excel 2007 файл с ADO и БЕЗ Управления установленной.

Во-первых, я использую 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 правильно создан и заполнен форматами данных.

Смежные вопросы