Подтвердить что ты не робот

Как переносить или экспортировать данные SQL Server 2005 в Excel

У меня есть простой запрос SQL Select, и я хочу отправить результаты в файл Excel. Я могу только сохранить как .csv, и преобразование в .xls создает супер-уродливый вывод. В любом случае, насколько я могу судить (используя Google), это не так прямолинейно. Любая помощь будет принята с благодарностью.

4b9b3361

Ответ 1

Используйте "Внешние данные" из Excel. Он может использовать ODBC-соединение для извлечения данных из внешнего источника: Data/Get External Data/New Database Query

Таким образом, даже если данные в базе данных меняются, вы можете легко обновить.

Ответ 2

SSIS не требует больших усилий для такого рода вещей и очень прямолинейна (и это только то, для чего это необходимо).

  • Щелкните правой кнопкой мыши базу данных в SQL Management Studio
  • Перейдите в раздел "Задачи" и затем "Экспорт данных", затем вы увидите простой в использовании мастер.
  • Ваша база данных будет источником, вы можете ввести свой SQL-запрос
  • Выберите Excel в качестве целевого
  • Запустите его в конце мастера

Если вы захотите, вы также можете сохранить пакет SSIS (там есть опция в конце мастера), чтобы вы могли делать это по расписанию или что-то в этом роде (и даже открывать и изменять, чтобы добавить больше функциональности, если это необходимо).

Ответ 3

Я нашел простой способ экспортировать результаты запроса из SQL Server Management Studio 2005 в Excel.

1) Выберите пункт меню Query → Query Options.

2) Установите флажок в результатах → Сетка → Включить заголовки столбцов при копировании или сохранении результатов.

После этого, когда вы выберете "Все" и скопируйте результаты запроса, вы можете вставить их в Excel, и будут присутствовать заголовки столбцов.

Ответ 4

Смотрите это


Это, безусловно, лучший пост для экспорта в excel из SQL:

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926

Процитировать от пользователя madhivanan,

Помимо использования мастера DTS и экспорта, мы также можем использовать этот запрос для экспорта данных из SQL Server2000 в Excel

Создайте файл Excel с именем testing с заголовками, аналогичными заголовкам столбцов таблицы, и используйте эти запросы

1 Экспорт данных в существующий файл EXCEL из таблицы SQL Server

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=D:\testing.xls;', 
    'SELECT * FROM [SheetName$]') select * from SQLServerTable

2 Экспорт данных из Excel в новую таблицу SQL Server

select * 
into SQLServerTable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=D:\testing.xls;HDR=YES', 
    'SELECT * FROM [Sheet1$]')

3 Экспорт данных из Excel в существующую таблицу SQL Server

Insert into SQLServerTable Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=D:\testing.xls;HDR=YES', 
    'SELECT * FROM [SheetName$]')

4 Если вы не хотите заранее создавать файл EXCEL и хотите экспортировать данные на него, используйте

EXEC sp_makewebtask 
    @outputfile = 'd:\testing.xls', 
    @query = 'Select * from Database_name..SQLServerTable', 
    @colheaders =1, 
    @FixedFont=0,@lastupdated=0,@resultstitle='Testing details'

(Теперь вы можете найти файл с данными в табличном формате)

5 Чтобы экспортировать данные в новый файл EXCEL с заголовком (имена столбцов), создайте следующую процедуру

create procedure proc_generate_excel_with_columns
(
    @db_name    varchar(100),
    @table_name varchar(100),   
    @file_name  varchar(100)
)
as

--Generate column names as a recordset
declare @columns varchar(8000), @sql varchar(8000), @data_file varchar(100)
select 
    @columns=coalesce(@columns+',','')+column_name+' as '+column_name 
from 
    information_schema.columns
where 
    [email protected]_name
select @columns=''''''+replace(replace(@columns,' as ',''''' as '),',',',''''')

--Create a dummy file to have actual data
select @data_file=substring(@file_name,1,len(@file_name)-charindex('\',reverse(@file_name)))+'\data_file.xls'

--Generate column names in the passed EXCEL file
set @sql='exec master..xp_cmdshell ''bcp " select * from (select '[email protected]+') as t" queryout "'[email protected]_name+'" -c'''
exec(@sql)

--Generate data in the dummy file
set @sql='exec master..xp_cmdshell ''bcp "select * from '[email protected]_name+'..'[email protected]_name+'" queryout "'[email protected]_file+'" -c'''
exec(@sql)

--Copy dummy file to passed EXCEL file
set @sql= 'exec master..xp_cmdshell ''type '[email protected]_file+' >> "'[email protected]_name+'"'''
exec(@sql)

--Delete dummy file 
set @sql= 'exec master..xp_cmdshell ''del '[email protected]_file+''''
exec(@sql)

После создания процедуры выполните ее, указав имя базы данных, имя таблицы и путь к файлу:

EXEC proc_generate_excel_with_columns 'your dbname', 'your table name','your file path'

Его объявление 29 страниц, но это потому, что другие показывают разные способы, а также люди, задающие вопросы точно так же, как это делать.

Следуйте этой теме полностью и посмотрите на различные вопросы, которые задавали люди и как они решаются. Я получил довольно много знаний, просто просматривая его и использовал его части для получения ожидаемых результатов.

Обновление отдельных ячеек

Член также там Питер Ларсон сообщает следующее: Я думаю, здесь одна вещь отсутствует. Замечательно иметь возможность экспортировать и импортировать файлы Excel, но как насчет обновления отдельных ячеек? Или диапазон ячеек?

Это принцип того, как вы справляетесь с этим

update OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=c:\test.xls;hdr=no', 
'SELECT * FROM [Sheet1$b7:b7]') set f1 = -99

Вы также можете добавить формулы в Excel, используя это:

update OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=c:\test.xls;hdr=no', 
'SELECT * FROM [Sheet1$b7:b7]') set f1 = '=a7+c7'

Экспорт с именами столбцов с использованием T-SQL

У члена Mladen Prajdic также есть запись в блоге о том, как это сделать здесь

Ссылки: www.sqlteam.com (кстати, это отличный блог/форум для тех, кто хочет получить больше от SQL Server).

Ответ 5

Если вы ищете специальные товары, а не то, что вы поместите в SSIS. Из SSMS просто выделите сетку результатов, скопируйте, затем вставьте в excel, она не изящна, а работает. Затем вы можете сохранить как native.xls, а не .csv

Ответ 6

Вот видео, которое покажет вам шаг за шагом, как экспортировать данные в Excel. Это отличное решение для "одноразовых" проблем, когда вам нужно экспортировать в Excel:
Ad-Hoc Reporting

Ответ 7

Это намного проще сделать это изнутри Excel.!! Открыть Excel Данные > Импорт/экспорт данных > Импорт данных Рядом с именем файла нажмите кнопку "Новый источник" В разделе "Добро пожаловать в мастер подключения к данным" выберите "Microsoft SQL Server". Нажмите "Далее. Введите имя сервера и учетные данные. Из раскрывающегося списка выберите, какая база данных содержит нужную вам таблицу. Выберите таблицу, затем Далее..... Введите описание, если хотите, и нажмите "Готово". Когда вы закончите и вернетесь в Excel, просто нажмите "ОК" Легко.

Ответ 8

Создайте источник данных excel и вставьте значения,

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=D:\testing.xls;', 
'SELECT * FROM [SheetName$]') select * from SQLServerTable

Дополнительная информация доступна здесь http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926

Ответ 9

Вы всегда можете использовать ADO для записи результатов в ячейки листа из объекта набора записей

Ответ 10

Удобный инструмент Преобразование SQL в Excel преобразует результат SQL-таблицы или SQL-запроса в файл Excel без программирования.

Основные функции - Преобразование/экспорт таблицы SQL в Excel - Преобразование/экспорт нескольких таблиц (несколько результатов запроса) на несколько листов Excel. - Разрешить гибкий запрос TSQL, который может иметь несколько операторов SELECT или других сложных запросов запроса.

В. С Уважением, Alex

Ответ 11

Существует несколько инструментов для экспорта/импорта из SQL Server в Excel.

Google - ваш друг: -)

Мы используем DbTransfer (который является одним из тех, который также может экспортировать полную базу данных в файл Excel): http://www.dbtransfer.de/Products/DbTransfer.

Мы раньше использовали функцию openrowset для SQL-сервера, но я никогда не был доволен ею, потому что это не очень простое использование и отсутствие функций и скорости...

Ответ 12

Попробуйте использовать инструмент "Импорт и экспорт данных (32-разрядный)". Доступно после установки MS SQL Management Studio Express 2012.

С помощью этого инструмента очень легко выбрать базу данных, таблицу или вставить собственный SQL-запрос и выбрать пункт назначения (например, файл MS Excel).

Ответ 13

Я должен импортировать данные в книгу Excel на разных листах, так как в таблице содержится более 3600000 записей, хотя я могу импортировать только 1000000 книг, я использую мастер импорта Excel, он отлично работает для 1M записей на одном листе, в то время как Мне нужно импортировать все записи 3,7 м в этой рабочей тетради, помещая в разные листы.

Ответ 14

Я должен импортировать данные в книгу Excel на разных листах, так как в таблице содержится более 3600000 записей, хотя я могу импортировать только 1000000 книг, я использую мастер импорта Excel, он отлично работает для 1M записей на одном листе, в то время как Мне нужно импортировать все записи 3,7 м в этой рабочей тетради, помещая в разные листы.

Ответ 15

вы можете щелкнуть правой кнопкой мыши по сетке результатов на SQL-сервере и выбрать сохранить как CSV. вы можете его импортировать в Excel.

Excel дает вам мастер импорта, убедитесь, что вы выбрали запятую. он отлично работает для меня, когда мне нужно импортировать записи 50k + в excel.

Ответ 16

Проверьте это.

Query -> Query Options.

Results -> Grid -> Include column headers when copying or saving the results