web-dev-qa-db-fra.com

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.

47
YourMomzThaBomb

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.

40
Sunny Milenov

SSIS est une évidence pour faire ce genre de choses et est très simple (et c'est exactement le genre de chose à laquelle il est destiné).

  1. Cliquez avec le bouton 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 comme cible
  5. Exécuter à la fin de l'assistant

Si vous le souhaitez, vous pouvez également enregistrer le package SSIS (une option se trouve à la fin de l'Assistant) afin de pouvoir le faire selon un calendrier ou quelque chose de ce type (et même ouvrir et modifier pour ajouter davantage de fonctionnalités si nécessaire).

59
Ryan Farley

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) Activez la case à cocher dans Résultats -> Grille -> inclure les en-têtes de colonne lors de la copie ou de l'enregistrement des résultats.

Après cela, 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.

26
Mikhail Glukhov

Voir ceci


C'est de loin le meilleur post pour exporter du code SQL vers Excel:

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

Pour citer l'utilisateur madhivanan,

Outre l'utilisation de DTS et de l'assistant d'exportation, nous pouvons également utiliser cette requête pour exporter des données de SQL Server2000 vers Excel

Créez un fichier Excel nommé testing avec les en-têtes identiques à ceux des colonnes de table et utilisez ces requêtes.

1 Exporter des données vers un fichier Excel existant à partir d'une 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 d'Excel vers une 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 d'Excel vers une table SQL Server existante

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 que vous souhaitez y exporter des données, utilisez

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

(Vous pouvez maintenant trouver le fichier avec les données sous forme de tableau)

5 Pour exporter des données dans un nouveau fichier Excel avec en-tête (noms de colonnes), créez 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 
    [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)

Après avoir créé la procédure, exécutez-la en fournissant le nom de la base de données, le nom de la table et le chemin du fichier:

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

C’est 29 pages volumineuses, mais c’est parce que d’autres montrent diverses manières, ainsi que des personnes qui posent des questions comme celle-ci sur la façon de le faire.

Suivez ce fil entièrement et examinez les différentes questions que les gens ont posées et comment elles sont résolues. J'ai acquis pas mal de connaissances et je les ai utilisées en partie pour obtenir les résultats escomptés.

Pour mettre à jour des cellules individuelles

Un membre également présent Peter Larson a écrit ce qui suit: Je pense qu’il manque une chose ici. Il est bon de pouvoir exporter et importer des fichiers Excel, mais qu’en est-il de la mise à jour de cellules uniques? Ou une gamme de cellules?

C’est le principe de votre gestion

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 à Excel en utilisant 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'

Exporter avec des noms de colonnes à l'aide de T-SQL

Le membre Mladen Prajdic a également une entrée de blog expliquant comment faire ceci ici

Références: www.sqlteam.com (En fait, il s'agit d'un excellent blog/forum pour ceux qui cherchent à tirer le meilleur parti de SQL Server).

13
JonH

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

5
Michael K. Campbell

Si vous recherchez des éléments ad-hoc plutôt que des éléments à intégrer dans SSIS. Dans SSMS, mettez en surbrillance la grille de résultats, copiez-la puis collez-la dans Excel, ce n’est pas élégant, mais fonctionne. Ensuite, vous pouvez enregistrer en tant que fichier .xls natif plutôt que .csv

5
Mitchel Sellers

C'est BEAUCOUP plus facile de le faire depuis Excel. !! Ouvrez Excel Data> Import/Export Data> Import Data en regard du nom du fichier, cliquez sur le bouton "Nouvelle source" dans Bienvenue dans l’assistant de connexion de données, choisissez Microsoft SQL Server. Cliquez sur Suivant. Entrez le nom du serveur et les informations d'identification. Dans le menu déroulant, choisissez la base de données contenant la table dont vous avez besoin. Sélectionnez votre table puis Suivant ..... Entrez une description si vous le souhaitez et cliquez sur Terminer. Lorsque vous avez terminé et revenir dans Excel, cliquez simplement sur "OK" Facile.

3
Bill Anderson

Créez la source de données Excel et insérez les valeurs,

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

Plus d'informations sont disponibles ici http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926

2
Prathap

Un outil pratique Convertir SQL en Excel convertit le résultat d'une requête ou d'un tableau SQL en fichier Excel sans programmation.

Caractéristiques principales - Convertir/exporter une table SQL en fichier Excel - Convertir/exporter plusieurs tables (plusieurs résultats de requête) en plusieurs feuilles de calcul Excel. - Autoriser les requêtes TSQL flexibles pouvant comporter plusieurs instructions SELECT ou d'autres instructions de requête complexes.

B. Cordialement, Alex

1
Alex

Il existe plusieurs outils pour exporter/importer de SQL Server vers Excel.

Google est ton ami :-)

Nous utilisons DbTransfer (qui est l'un de ceux qui peuvent exporter une base de données complète vers un fichier Excel également) ici: http://www.dbtransfer.de/Products/DbTransfer .

Nous avions déjà utilisé la fonctionnalité openrowset du serveur SQL, mais je n’en ai jamais été satisfaite, car elle n’est pas très facile à utiliser et manque de fonctionnalités et de rapidité ...

1
Michael Geller

Vous pouvez toujours utiliser ADO pour écrire les résultats dans les cellules de la feuille de calcul à partir d'un objet de jeu d'enregistrements

1
Russ Cam

Essayez l'outil 'Importer et exporter des données (32 bits)'. Disponible après l'installation de MS SQL Management Studio Express 2012.

Avec cet outil, il est très facile de sélectionner une base de données, une table ou d’insérer votre propre requête SQL et de choisir une destination (un fichier MS Excel par exemple).

0
Dennis