Milen070 Ответов: 1

Как экспортировать данные из SQL server в файл excel с помощью VB.NET


Я хочу экспортировать данные из базы данных в файл Excel. Это мой код, когда я использую MS Access:
Dim My_Connection As New System.Data.OleDb.OleDbConnection
Dim sql As String
Dim cmd As System.Data.OleDb.OleDbCommand
    
My_Connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myDB.mdb;Persist Security Info=False;Jet OLEDB:Database Password=myPassword"
My_Connection.Open()

sql = "SELECT product_ID, client_ID INTO [Excel 12.0;DATABASE=E:\test.xls].[EXPORT] FROM Orders"
cmd = New System.Data.OleDb.OleDbCommand(sql, My_Connection)
cmd.ExecuteNonQuery()


Этот код работает отлично. У меня нет Excel в моем компьютере. Я создал xls-файл, который открываю на другом компьютере с помощью Excel или Apache Calc.
Но я перемещаю базу данных на SQL Server 2014.

Что я уже пробовал:

Я меняю свой код:

Dim My_Connection As New System.Data.SqlClient.SqlConnection
Dim sql As String
Dim cmd As System.Data.SqlClient.SqlCommand

My_Connection.ConnectionString = "Data source=localhost;Initial Catalog=myDB;Integrated Security=false;uid=sa;password=myPassword;"
My_Connection.Open()

sql = "SELECT product_ID, client_ID INTO [Excel 12.0;DATABASE=E:\test.xls].[EXPORT] FROM Products"
cmd = New System.Data.SqlClient.SqlCommand(sql, My_Connection)
cmd.ExecuteNonQuery()

Когда я пытаюсь запустить его, я просто получаю сообщение об ошибке:
Указанное имя схемы "Excel 12.0;DATABASE=E:\test.xls- либо его не существует, либо у вас нет разрешения на его использование.

Richard MacCutchan

Сообщение об ошибке совершенно ясно. Убедитесь, что файл существует по этому пути и что он доступен для записи вашим приложением.

1 Ответов

Рейтинг:
1

Maciej Los

Начать здесь: Строки подключения Excel - ConnectionStrings.com[^]
Там вы найдете примеры строки подключения и текста команды. Например:

Цитата:
Синтаксис SQL " SELECT [Column Name One], [Column Name Two] FROM [Sheet One$]". т. е. имя листа excel, за которым следует " $ "и заключено в скобки" [""]".


Правильная строка подключения-это:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;
Extended Properties="Excel 12.0;HDR=YES";


Команда-текст для вставки данных в Excel:
INSERT INTO [EXPORT$]
SELECT product_ID, client_ID
FROM Products;


Для получения более подробной информации, пожалуйста, смотрите:
INSERT INTO Statement (Microsoft Access SQL) [Ссылка Разработчика Access 2007][^]
Как вставить, обновить и удалить записи из таблицы с помощью Access SQL [Access 2007 Developer Reference][^]