es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Exportación SAS XML con tagset.excelxp y configuración ODS con rejilla.

Intento exportar un archivo XML con 3 filas y 2 columnas en una misma hoja como se muestra en la siguiente imagen:

enter image description here

Para ello, utilizo el siguiente código:

ods tagsets.excelxp file="mypath\Stest.xml" style=printer 
  options(
          frozen_rowheaders='no' sheet_interval='none' sheet_name='sheet1'
          embedded_titles='yes' embedded_footnotes='yes');

ods layout gridded columns=2 rows=3 /*advance=table*/;
ods region;
proc print data=table1;
title  "table1";
run;
proc print data=table2;
title  "table2";
run;
proc print data=table3;
title  "table3";
run;

ods region;

proc print data=table4;
title  "table4";
run;
proc print data=table5;
title  "table5";
run;
proc print data=table6;
title  "table6";
run;
ods layout end;
ods tagsets.excelxp close;

Sin embargo, los resultados obtenidos son los siguientes:

enter image description here

¿Alguna idea?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la salida del código no es lo que esperabas. En lugar de tener 3 filas y 2 columnas en la misma hoja, hay dos hojas con las tablas divididas entre ellas.

    Una posible solución para lograr la salida deseada es utilizar la opción advance=table en la instrucción ods layout gridded. Esta opción asegura que cada tabla se muestre en una celda de la cuadrícula.

    A continuación se muestra el código actualizado:

    ods tagsets.excelxp file="mypath\Stest.xml" style=printer 
      options(
              frozen_rowheaders='no' sheet_interval='none' sheet_name='sheet1'
              embedded_titles='yes' embedded_footnotes='yes');
    
    ods layout gridded columns=2 rows=3 advance=table;
    ods region;
    proc print data=table1;
    title  "table1";
    run;
    ods region;
    ods region;
    proc print data=table2;
    title  "table2";
    run;
    ods region;
    ods region;
    proc print data=table3;
    title  "table3";
    run;
    ods region;
    ods region;
    proc print data=table4;
    title  "table4";
    run;
    ods region;
    ods region;
    proc print data=table5;
    title  "table5";
    run;
    ods region;
    ods region;
    proc print data=table6;
    title  "table6";
    run;
    ods region;
    ods layout end;
    ods tagsets.excelxp close;
    

    Al incluir advance=table, la salida ahora debería ser lo que esperabas: 3 filas y 2 columnas en la misma hoja.

Comments are closed.