47 votes

Comment transférer ou exporter des données SQL Server 2005 vers Excel

J'ai une simple requête SQL 'Select', et j'aimerais transférer les résultats dans un fichier Excel. Je ne peux enregistrer qu'en format .csv et la conversion en .xls crée une sortie super laide. En tout cas, autant que je sache (avec Google), cela ne semble pas être aussi simple. Toute aide serait grandement appréciée.

62voto

Ryan Farley Points 7916

SSIS est un no-brainer pour faire des trucs comme ça et est très simple (et c'est exactement le genre de chose, c'est pour).

  1. Cliquez-droit sur la base de données dans SQL Management Studio
  2. Accédez à Tâches, puis Exporter les données, vous verrez alors un assistant facile à utiliser.
  3. Votre base de données sera la source, vous pouvez entrer votre requête SQL
  4. Choisissez Excel en tant que cible
  5. Exécuter à la fin de l'assistant

Si vous le vouliez, vous pourriez enregistrer le package SSIS ainsi (il y a une option à la fin de l'assistant), de sorte que vous pouvez le faire sur un calendrier ou quelque chose (et même de l'ouvrir et de le modifier pour ajouter plus de fonctionnalités, si nécessaire).

41voto

Sunny Milenov Points 10978

Utilisez "Données externes" à partir d'Excel. Il peut utiliser une connexion ODBC pour extraire des données d'une source externe: Données / Obtenir des données externes / Nouvelle requête de base de données

Ainsi, même si les données de la base de données changent, vous pouvez facilement actualiser vos données.

26voto

micha12 Points 828

J'ai trouvé un moyen facile d'exporter les résultats d'une requête de SQL Server Management Studio 2005 vers Excel.

1) Sélectionnez l’option de menu Requête -> Options de requête.

2) Cochez la case dans Résultats -> Grille -> Inclure les en-têtes de colonne lors de la copie ou de l'enregistrement des résultats .

Ensuite, lorsque vous sélectionnez Tout et copiez les résultats de la requête, vous pouvez les coller dans Excel. Les en-têtes de colonne sont présents.

13voto

JonH Points 20454

Voir ce


C'est de loin le meilleur poste pour l'exportation vers excel à partir de SQL:

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

Pour citer l'utilisateur madhivanan,

Outre l'utilisation de DTS et de l'assistant Exportation, nous pouvons également utiliser cette requête pour exporter des données à partir de SQL Server 2000 vers Excel

Créer un fichier Excel nommé test avoir les en-têtes de même que celui des colonnes de la table et l'utilisation de ces requêtes

1 Exporter les données vers EXCEL existant fichier à partir de la table SQL Server

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

2 Exporter des données depuis Excel pour la nouvelle table 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 Exporter des données à partir d'Excel existantes de la table 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 Si vous ne voulez pas créer un fichier EXCEL à l'avance et souhaitez exporter les données vers elle, l'utiliser

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

(Maintenant, vous pouvez trouver le fichier avec les données sous forme de tableau)

5 Pour exporter les données vers EXCEL nouveau fichier d'en-tête(noms de colonne), créer la procédure suivante

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 
    table_name=@table_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 '+@columns+') as t" queryout "'+@file_name+'" -c'''
exec(@sql)

--Generate data in the dummy file
set @sql='exec master..xp_cmdshell ''bcp "select * from '+@db_name+'..'+@table_name+'" queryout "'+@data_file+'" -c'''
exec(@sql)

--Copy dummy file to passed EXCEL file
set @sql= 'exec master..xp_cmdshell ''type '+@data_file+' >> "'+@file_name+'"'''
exec(@sql)

--Delete dummy file 
set @sql= 'exec master..xp_cmdshell ''del '+@data_file+''''
exec(@sql)

Après la création de la procédure, de l'exécuter par la fourniture d'une base de données, nom de nom de table et chemin d'accès au fichier:

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

Ses un whomping 29 pages, mais c'est parce que d'autres montrent divers autres moyens, ainsi que les personnes à poser des questions comme celle-ci sur la façon de le faire.

Suivre ce thread entièrement et d'examiner les différentes questions que les gens ont demandé et comment ils sont résolus. J'ai ramassé un peu de connaissance juste de l'écrémage et l'ont utilisé en partie pour obtenir les résultats escomptés.

Pour mettre à jour des cellules individuelles

Un membre aussi y Peter Larson postes suivants: Je pense que la seule chose qui manque ici. C'est génial d'être en mesure à l'Exportation et l'Importation de fichiers Excel, mais comment sur la mise à jour des cellules individuelles? Ou une plage de cellules?

C'est le principe de la manière dont vous gérer qui

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

Vous pouvez également ajouter des formules dans Excel à l'aide de ceci:

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'

L'exportation avec les noms de colonnes à l'aide de T-SQL

Membre Mladen Prajdic dispose également d'une entrée de blog sur la façon de le faire ici

Références: www.sqlteam.com (btw c'est un excellent blog / forum pour ceux qui cherchent à obtenir plus de SQL Server).

5voto

Voici une vidéo qui vous montrera, étape par étape, comment exporter des données vers Excel. C'est une excellente solution pour les problèmes ponctuels nécessitant une exportation vers Excel:
Rapports ad hoc

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X