Tip Semanal 019: Exporta a Excel con EXPORT
Posted 10-01-2021 04:16 PM
(11070 views)
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.