2008-09-17 40 views
44

Tengo una simple consulta SQL 'Seleccionar', y me gustaría volcar los resultados en un archivo de Excel. Solo puedo guardar como .csv y la conversión a .xls crea un resultado muy feo. En cualquier caso, por lo que puedo decir (usando Google), esto no parece ser tan directo. Cualquier ayuda sería muy apreciada.Cómo transferir o exportar datos de SQL Server 2005 a Excel

+1

Exportar al archivo de texto (opción "Guardar resultados como" en SQL Server Management Studio) e importar ese archivo a Excel ("Obtener datos externos" del texto). Enfrenté problemas usando los otros enfoques, como SSIS. "Datos externos de la conexión" porque no da una opción para ejecutar una consulta. – mauryat

+0

Cualquiera que busque una respuesta en profundidad a esto, consulte este http://stackoverflow.com/questions/9086880/t-sql-export-to-new-excel-file/9086889#9086889 – JonH

Respuesta

34

Utilice "Datos externos" de Excel. Puede usar la conexión ODBC para obtener datos de una fuente externa: Datos/Obtener datos externos/Nueva consulta de base de datos

De esta manera, incluso si los datos en la base de datos cambian, puede actualizar fácilmente.

+0

Esto no funciona si el la computadora que ejecuta Excel no tiene acceso a la base de datos. – Shane

+5

@Shane, sí, todo funciona mucho mejor después de encenderlo ... ;-) –

+3

Heheh, a la derecha. Quise decir si SQL Server era inaccesible desde cualquier computadora que ejecutara Excel. En ese caso, necesitaría usar la solución SSIS. – Shane

57

SSIS es una obviedad para hacer cosas como esta y es muy directo (y este es el tipo de cosas para las que es).

  1. Haga clic derecho en la base de datos en SQL Management Studio
  2. Ir a Tareas y luego Exportar datos, A continuación, verá un fácil utilizar el asistente.
  3. Su base de datos será la fuente, se puede introducir la consulta SQL
  4. Elija Excel como objetivo
  5. hacerlo funcionar a finales de asistente

Si quisiera, podría ahorrar el paquete SSIS como bueno (hay una opción al final del asistente) para que pueda hacerlo en un horario o algo así (e incluso abrir y modificar para agregar más funcionalidad si es necesario).

+0

¡Perfecto! Esto me ayudó mucho. –

+3

¡Excelente! Esto debe marcarse como una respuesta. Muy buena solución. – Shane

+0

Guess SSIS significa SQL Server Integration Services. ¿Cómo puedo comenzar esta herramienta? No hay tal cosa en los programas. – BetaRide

4

Si está buscando elementos ad-hoc en lugar de algo que pondría en SSIS. Desde dentro de SSMS, simplemente resalte la cuadrícula de resultados, copie y pegue en Excel, no es elegante, pero funciona. Luego puede guardar como .xls nativos en lugar de .csv

+0

Estaba desplazándome para ver si alguien me había ofrecido esta opción, ya que es claramente la más fácil –

5

Aquí hay un video que le mostrará, paso a paso, cómo exportar datos a Excel. Es una gran solución para los problemas de una sola vez 'donde tiene que exportar a Excel:
Ad-Hoc Reporting

+0

Gracias. Video muy útil – MDStephens

+0

Excelente video. Muchas gracias :) – Sampath

1

Siempre se puede usar ADO para escribir los resultados fuera de las celdas de la hoja de un objeto de conjunto de registros

26

I' he encontrado una manera fácil de exportar resultados de consultas de SQL Server Management Studio 2005 a Excel.

1) Seleccione la opción del menú Consulta -> Opciones de consulta.

2) Establecer casilla de verificación en Resultados -> Cuadrícula ->Incluir encabezados de columna al copiar o guardar los resultados.

Después de eso, cuando selecciona Todo y copia los resultados de la consulta, puede pegarlos en Excel y los encabezados de columna estarán presentes.

3

Es mucho más fácil hacerlo desde Excel. Abrir Excel Datos> Importar/Exportar datos> Importar datos Al lado del nombre del archivo, haga clic en el botón "Fuente nueva" En Bienvenido al Asistente de conexión de datos, seleccione Microsoft SQL Server. Haga clic en Siguiente. Ingrese el nombre del servidor y las credenciales. En el menú desplegable, elija la base de datos que contenga la tabla que necesite. Seleccione su tabla luego Siguiente ..... Ingrese una Descripción si lo desea y haga clic en Terminar. Cuando haya terminado y vuelva a Excel, simplemente haga clic en "OK" Fácil.

2

crear el origen de datos de Excel e insertar los valores,

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

Más informaciones están disponibles aquí http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926

+0

Esto es para SQL Server, por supuesto ... –

1

Una herramienta muy útil Convert SQL to Excel convierte tabla de SQL o SQL resultado de la consulta al archivo de Excel sin necesidad de programación.

Características principales - Convertir/exportar una tabla de SQL a archivo de Excel - Convertir/exportar varias tablas (resultados de múltiples consultas) a varias hojas de trabajo de Excel. - Permitir consultas TSQL flexibles que pueden tener múltiples instrucciones SELECT u otras declaraciones complejas de consulta.

B. Saludos, Alex

1

Existe varias herramientas para la exportación/importación de SQL Server a Excel.

Google es su amigo :-)

Utilizamos DbTransfer (que es uno de los que se pueden exportar una base de datos completa a un archivo de Excel también) aquí: http://www.dbtransfer.de/Products/DbTransfer.

Hemos utilizado la característica openrowset del servidor sql anteriormente, pero nunca me satisfizo, porque no es muy fácil de usar y carece de características y velocidad ...

12

See this


Esto es, con mucho, el mejor destino para exportar a Excel desde SQL:

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

Para citar de usuario madhivanan,

Aparte de utilizar DTS y Asistente de exportación, también podemos usar esta consulta para exportar datos de SQL Server2000 a Excel

Crear un archivo de Excel prueba denominada tener las cabeceras mismo que el de las columnas de tabla y utilizar estas consultas

1 Exportar datos a un archivo de Excel existente de tabla de SQL Server

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

2 exportar datos desde Excel a la tabla nueva de 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 Exportar datos desde Excel a tabla de SQL Server existente

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 no desea crear un archivo EXCEL con antelación y quiere exportar los datos a ella, utilice

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

(Ahora se puede encontrar el archivo con los datos en formato tabular)

5 Para exportar los datos a un archivo de Excel nuevo con rumbo (nombres de columna), cree el siguiente procedimiento

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) 

Después de crear el procedimiento, ejecutarlo proporcionando el nombre de base de datos, nombre de la tabla y la ruta del archivo:

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

Su Whomping a 29 páginas, pero eso se debe a que otros muestran varias otras maneras, así como personas que hacen preguntas como ésta sobre la manera de hacerlo.

Sigue ese hilo por completo y mira las diferentes preguntas que las personas han hecho y cómo se resuelven. Recogí un poco de conocimiento simplemente rozando y he usado porciones de él para obtener los resultados esperados.

Para actualizar células individuales

Un miembro también existe publica Peter Larson lo siguiente: Creo que una cosa es que falta aquí. Es genial poder exportar e importar archivos a Excel, pero ¿qué hay de actualizar las celdas individuales? O un rango de celdas?

Este es el principio de cómo se las arreglan que

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

También puede agregar fórmulas de Excel usando esto:

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' 

Exportación con nombres de columna utilizando T-SQL

El miembro Mladen Prajdic también tiene una entrada en el blog sobre cómo hacer esto here

Referencias: www.sqlteam.com (por cierto este es un excelente blog/foro para cualquiera que busque sacar más provecho de SQL Server).

+0

Ver este http://stackoverflow.com/questions/9086880/t-sql-export-to-new-excel-file/9086889 # 9086889 – JonH

-1

puede hacer clic derecho en una grilla de resultados en el servidor SQL y seleccionar guardar como CSV. puede entonces puede importar esto en Excel.

Excel le ofrece un asistente de importación, asegúrese de seleccionar delimitado por comas. funciona bien para mí cuando necesitaba importar 50k + registros en Excel.

+0

razon de downvote? – JGilmartin

0

Pruebe la herramienta 'Importar y exportar datos (32 bits)'. Disponible después de instalar MS SQL Management Studio Express 2012.

Con esta herramienta es muy fácil seleccionar una base de datos, una tabla o insertar su propia consulta SQL y elegir un destino (un archivo MS Excel, por ejemplo).

-1

Compruebe esto.

Query -> Query Options. 

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