BookmarkSubscribeRSS Feed
Tip Semanal 019: Exporta a Excel con EXPORT
Berenice25
SAS Employee

El presente Tip incluyen varios -pero varios en serio, no es mentira- ejemplos con alternativas de exportación de una tabla a Excel. 
Siempre utilizando el mismo procedimiento, aprovechamos para mostrarles algunas de las características de los motores (o engines) más conocidos para interactuar entre SAS y Excel. Y no nos olvidamos de renombrar, filtrar y más.

 

/****************************************************************************/
/* Exporta archivos SAS como archivos de Excel utilizando Proc Export.	  	*/
/* Ejemplos con varias alternativas.										*/
/****************************************************************************/


/*-------------------*/
/* inicio del código */
/*-------------------*/


/*----------------------------------------------------------------------*/
/* IMPORTANTE_1: es necesario tener en cuenta que algunas alternativas	*/
/* de exportación necesitan 'SAS/ACCESS to PC Files' activado.			*/	
/* 'SAS/ACCESS to PC Files' permite importar/exportar de/a varios tipos	*/
/* de archivos, por ejemplo a Excel.									*/		
/*----------------------------------------------------------------------*/

/*----------------------------------------------------------------------*/
/* IMPORTANTE_2: los diferentes 'motores' (ver DBMS) se utilizan para 	*/
/* poder resolver la comunicación entre SAS (vamos a suponer que 		*/
/* contamos con SAS de 64 bits) y Excel (que podría ser de 32 o de 		*/
/* 64 bits. 															*/
/*----------------------------------------------------------------------*/

 %put Versión de SAS: &sysvlong; /* muestra la versión de SAS en el Log */

 
/*----------------------------------------------------------------------*/
/* Ejemplo 1: el motor es 'EXCEL'. 										*/
/* Fue pensado para las versiones de Excel 97, 2000, 2002 y 2003.		*/
/* Recordar que la máxima cantidad de columnas es 255.					*/
/* Exporta a '.xls', '.xlsb' y '.xlsx'.							 		*/
/*----------------------------------------------------------------------*/

PROC EXPORT DATA = sashelp.cars 
	OUTFILE = "G:\Shared\Customer Success\Autos_xls" 
	DBMS = EXCEL 
	REPLACE; /* permite reemplazar/actualizar el archivo Excel */
	sheet="Autos";  /* nombre de la hoja */
RUN;

 
/*----------------------------------------------------------------------*/
/* Ejemplo 2: el motor es 'EXCELCS'. 									*/
/* Es útil para interactuar entre SAS de 64 bits y Excel de 32 bits.	*/
/* Exporta a otros tipos de archivo Excel, además del famoso '.xls'		*/
/* También permite trabajar en SAS bajo Unix. 							*/
/*----------------------------------------------------------------------*/

PROC EXPORT DATA = sashelp.cars 
	OUTFILE = "G:\Shared\Customer Success\Autos_Customer_Success" 
	DBMS = EXCELCS 
	REPLACE; /* permite reemplazar/actualizar el archivo Excel */
RUN;


/*------------------------------------------------------------------*/
/* Ejemplo 3: el motor es 'XLSX'. 									*/
/* Disponible a partir de SAS 9.3M1									*/
/* Fue pensado para las versiones de Excel a partir de Excel 2007.	*/
/* Es práctico aunque no tiene algunas de las posibilidades de 		*/
/* los anteriores.													*/
/*------------------------------------------------------------------*/

PROC EXPORT DATA = sashelp.cars 
	OUTFILE = "G:\Shared\Customer Success\Autos_Customer_Success" 
	DBMS = XLSX 
	REPLACE; /* permite reemplazar/actualizar el archivo Excel */
	sheet="Autos";
RUN;


/*------------------------------------------------------------------*/
/* Ejemplo 4: exporta un conjunto de datos SAS a varias hojas de un	*/
/* mismo archivo Excel. 											*/
/* Agrega un filtro, selecciona columnas y las renombra.			*/
/*------------------------------------------------------------------*/

/* Etapa 1: Crea una hoja con la tabla completa */
proc export data=sashelp.cars     
	(keep=Make Model Type Origin /* guarda estas 4 variables solamente */
	rename=(Make=Marca Model=Modelo Type=Tipo Origin=Origen)) /* renombra las 4 variables */
	outfile="G:\Shared\Customer Success\Autos_en hojas"
	dbms=xlsx
	replace;
	sheet="Todos los orígenes";
run;

/* Etapa 2: Crea tres hojas nuevas con las tablas filtradas por origen */
/* Hoja 'Europa' */
proc export data=sashelp.cars     
	(where=(Origen="Europe")   /* Filtro sobre la variable 'Origin' */
								/* ¡Atención! Hay que escribir 'Origen' y no 'Origin' 
								porque esta variable está renombrada (ver más abajo en 'rename=')*/
	keep=Make Model Type Origin /* incluir 'Origin' solamente para controlar el resultado */
	rename=(Make=Marca Model=Modelo Type=Tipo Origin=Origen))
	outfile="G:\Shared\Customer Success\Autos_en hojas"
	dbms=xlsx
	replace;
	sheet="Origen Europa";
run;

/* Hoja 'Asia' */
proc export data=sashelp.cars     
	(where=(Origen="Asia")   /* Filtro sobre la variable 'Origin' */
								/* ¡Atención! Hay que escribir 'Origen' y no 'Origin' 
								porque esta variable está renombrada (ver más abajo en 'rename=')*/
	keep=Make Model Type Origin /* incluir 'Origin' solamente para controlar el resultado */
	rename=(Make=Marca Model=Modelo Type=Tipo Origin=Origen))
	outfile="G:\Shared\Customer Success\Autos_en hojas"
	dbms=xlsx
	replace;
	sheet="Origen Asia";
run;

/* Hoja 'USA' */
proc export data=sashelp.cars     
	(where=(Origen="USA")   /* Filtro sobre la variable 'Origin' */								
							 /* ¡Atención! Hay que escribir 'Origen' y no 'Origin' 
								porque esta variable está renombrada (ver más abajo en 'rename=')*/
	keep=Make Model Type Origin /* agregar 'Origin' solamente para controlar el resultado */
	rename=(Make=Marca Model=Modelo Type=Tipo Origin=Origen))
	outfile="G:\Shared\Customer Success\Autos_en hojas"
	dbms=xlsx
	replace;
	sheet="Origen USA";
run;


/*------------------------------------------------------------------*/
/* Ejemplo 5: exporta un conjunto de datos SAS, uno con etiquetas y */
/* otro sin etiquetas, a dos hojas de un archivo Excel.				*/
/*------------------------------------------------------------------*/

/* Sin etiquetas */
proc export data=sashelp.cars
	(keep=EngineSize Length MPG_City MPG_Highway)
	outfile="G:\Shared\Customer Success\Autos_etiquetas"
	dbms=xlsx
	replace;
	sheet="Nombres de variables";
run;

/* Con etiquetas */
proc export data=sashelp.cars
	(keep=EngineSize Length MPG_City MPG_Highway)
	outfile="G:\Shared\Customer Success\Autos_etiquetas"
	dbms=xlsx
	replace
	label; /* etiquetas de variables */
	sheet="Etiquetas de variables";
run;

/*----------------*/
/* fin del código */
/*----------------*/
14 Comments
Noma95
Calcite | Level 5

Excelente consejo..

rherrera
Fluorite | Level 6

Es posible asignarle formato o estilo a la tabla exporta a excel?

Por ejemplo que todas las celdas tengan bordes, que los títulos estén en bold. 

Y es posible aplicarle formato condicional? 

Por ejemplo que si el campo porcentajeCumplimiento > 1 entonces el color del relleno de la celda sea verde, si < 1 sea rojo. 

Gracias

MikeArrieta
Calcite | Level 5

Interesante... 

 

sardav
SAS Employee

Hola rherrera!

Recién ahora veo tus preguntas.

"Es posible asignarle formato o estilo a la tabla exporta a excel?" --> Sí

"Por ejemplo que todas las celdas tengan bordes, que los títulos estén en bold." --> Claro!

"Y es posible aplicarle formato condicional?" --> Sí

"Por ejemplo que si el campo porcentajeCumplimiento > 1 entonces el color del relleno de la celda sea verde, si < 1 sea rojo." --> Claro! Sí, se puede.

 

Conclusión: se pueden guardar tablas en Excel con formatos de celdas y formatos condicionales. Pero no utlizando Proc Export porque este es un procedimiento que resuelve lo más elemental de la exportación. Embellecer la exportación a Excel es otro tema... que creo que veremos en el próximo webinar de 'SAS y Excel (parte 2 - reloaded)'!

 

Moya1972
Calcite | Level 5

Hola, cómo puedo exportar datos de SAS a un Excel pero que se peguen a partir de la Fila 2 Columna A. 

Muchas gracias 

sardav
SAS Employee

Tal vez te sea de utilidad mirar (dentro de Consejos y Trucos):

Webinar SAS y Excel 2021 | Códigos: Capítulo 4 "Tomando control de Excel" --> Código 3: Destino....Excel --> Ejemplo 4

Espero que sea eso lo que necesitas.

Marlon27182
Calcite | Level 5

Hola!
Hice una consulta utilizando PROC SQL pero no puedo exportar el resultado a Excel.
Agradecería me puedas ayudar a exportar.

wilkoba
SAS Employee

Hola @Marlon27182 ,

 

Puedes poner CREATE TABLE en PROC SQL para que su resultado sea grabado en una tabla SA y despues hacer el PROC EXPORT como presentado en este consejo/truco.

 

/* Exemplo PROC SQL creando una tabla:*/

PROC SQL;

create table work.teste as
select make, model, type from sashelp.cars;

quit;
/* Despues pongas */
PROC EXPORT data=work.teste;
OUTFILE = "C:\TMP\archivo_teste" 
DBMS= XLSX
run;

Saludos, espero tener ayudado.

 

 

atonalwilson
Calcite | Level 5

SSMS gives us a few options to get our results to Excel. As with most problems, there is more than one way to solve it so we'll step through more than one solution that can all get us to the same place.

 

Getting Query Results from SSMS to Excel
These are the four methods of getting query results from SSMS to Excel we'll be covering:

 

  1. Copy and paste from the results tab
  2. Save results as a delimited file
  3. Saving results directly to a fixed-width .rpt file
  4. Using the SQL Server Import and Export Wizard

 

You would likely be working with a lot more data than this, but in the interest of keeping the screenshots clean and readable, and focusing on the solution instead of the data, we'll run the following T-SQL query in an SSMS Query Window to obtain a list of product names and models from the AdventureWorksLT2019 database.

 

USE AdventureWorksLT2019;
GO

SELECT [p].[Name] AS [ProductName]
,[pm].[Name] AS [ProductModel]
FROM [SalesLT].[Product] [p]
JOIN [SalesLT].[ProductModel] [pm] ON [p].[ProductModelID] = [pm].[ProductModelID]
ORDER BY [p].[Name];
GO
Marlon27182
Calcite | Level 5

Gracias @wilkoba 
y se podría exportar sin necesidad de crear una tabla?

wilkoba
SAS Employee

Hola @Marlon27182,

 

En si acaso comentas la linea con "CREATE TABLE" y se estás utilizando la herramienta SAS Entreprise Guide

PROC SQL;
/*create table work.teste as */
select make, model, type from sashelp.cars;
quit;

Es possible ver la pestaña "Results" y hagaz Botón Derecho -> Compartir (Share) -> Envia a Microsoft Excel )Send to Microsoft Excel, dependiendo de su salida en puedes llevar mucho tiempo, no lo recomiendo para tabla muy largas.

wilkoba_0-1683549548235.png

 

Sigo de apoyando caso necessites.

Saludos.

 

atonalwilson
Calcite | Level 5

There are several ways to Export/Import SQL Server data to an Excel file. In this article, a couple of ways to import and export SQL Server data to an Excel file will be explained:

 

Export SQL Server data to an Excel file using

 

  • the SQL Server Import and Export Wizard
  • T-SQL code
  • Export to Excel from ApexSQL Complete

Import SQL Server data into Excel using the Data Connection Wizard. Apart from this if you want to learn something new then 6 Sigma certification has been prepared for beginners to help them understand the basic functionality of Six Sigma.

 

Export SQL Server data to an Excel file using the SQL Server Import and Export Wizard

 

In SQL Server Management Studio (SSMS), there is a feature that provides for exporting data from one data source to another data source; in this case, data from SQL Server will be copied to an Excel file trough Export Wizard.

To start to use this feature, go to Object Explorer, right click on any database (e.g. AdventureworksDW2016CTP3), under the Tasks, choose Export Data command:

Elyan
Calcite | Level 5

¡Hola!

Ya genere mi archivo y puede exportarlo a formato de Excel,  ¿alguien me podría orientar o guiar con un ejemplo de cómo dar las instrucciones para poder enviarlo por correo? 

 

Gracias por su ayuda, saludos.

Elyan
Calcite | Level 5

@rherrera usa la función Proc Report, es la que yo uso para dar formato. 

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

Article Labels
Article Tags
Contributors