У меня есть простой запрос SQL Select, и я хочу отправить результаты в файл Excel. Я могу только сохранить как .csv, и преобразование в .xls создает супер-уродливый вывод. В любом случае, насколько я могу судить (используя Google), это не так прямолинейно. Любая помощь будет принята с благодарностью.
Как переносить или экспортировать данные SQL Server 2005 в Excel
Ответ 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