Hello
I want to export 6 tables into Excel (XLSX) in the following way:
3 tables in sheet1
3 tables in sheet2
I have tried to create it and I haven't received the desired result.
May anyone show the correct way
thanks so much
/****I get Sheet1 with 3 tables(correct) and 3 other sheets with 1 table in each sheet***/
/***I want to get Sheet1 with 3 tables and Sheet2 with 3 tables***/
ods excel file="/path/report.xlsx"
options(embedded_titles='yes' sheet_name="SH1" sheet_interval="none");
title;
title 'BMW';
proc print data=SASHELP.CARS(WHERE=(compress(make)='BMW')) noobs;
run;
title1 '';
title2 'Jaguar';
proc print data=SASHELP.CARS(WHERE=(compress(make)='Jaguar')) noobs;
run;
title1 '';
title2 'Lincoln';
proc print data=SASHELP.CARS(WHERE=(compress(make)='Lincoln')) noobs;
run;
ods excel options(embedded_titles='yes' sheet_name="SH2" sheet_interval="table");
title;
title 'Sedan';
proc print data=SASHELP.cars(WHERE=(compress(Type)='Sedan' )) noobs;
run;
title1 '';
title2 'Sports';
proc print data=SASHELP.cars(WHERE=(compress(Type)='Sports' )) noobs;
run;
title1 '';
title2 'SUV';
proc print data=SASHELP.CLASS(WHERE=(compress(Type)='SUV' )) noobs;
run;
ods excel close;
You need reset these options before the second sheet.
ods excel file="c:\temp\report.xlsx"
options(embedded_titles='yes' sheet_name="SH1" sheet_interval="none");
title;
title 'BMW';
proc print data=SASHELP.CARS(WHERE=(compress(make)='BMW')) noobs;
run;
title1 '';
title2 'Jaguar';
proc print data=SASHELP.CARS(WHERE=(compress(make)='Jaguar')) noobs;
run;
title1 '';
title2 'Lincoln';
proc print data=SASHELP.CARS(WHERE=(compress(make)='Lincoln')) noobs;
run;
ods select none;
ods excel options( sheet_interval="proc");
proc print data=sashelp.class;run;
ods select all;
ods excel options(embedded_titles='yes' sheet_name="SH2" sheet_interval="none");
title;
title 'Sedan';
proc print data=SASHELP.cars(WHERE=(compress(Type)='Sedan' )) noobs;
run;
title1 '';
title2 'Sports';
proc print data=SASHELP.cars(WHERE=(compress(Type)='Sports' )) noobs;
run;
title1 '';
title2 'SUV';
proc print data=SASHELP.cars(WHERE=(compress(Type)='SUV' )) noobs;
run;
ods excel close;
When you create sheet named SH2, use sheet_interval="now"
Thanks, however please see the error when using "now"
ERROR: Argument now for word option sheet_interval not recognized. Expecting one of these keywords output, table, page, bygroup,
bygroups, proc, none or none.
/***Get error about sheet_interval="now" ***/
ods excel file="/path/report.xlsx"
options(embedded_titles='yes' sheet_name="SH1" sheet_interval="none");
title;
title 'BMW';
proc print data=SASHELP.CARS(WHERE=(compress(make)='BMW')) noobs;
run;
title1 '';
title2 'Jaguar';
proc print data=SASHELP.CARS(WHERE=(compress(make)='Jaguar')) noobs;
run;
title1 '';
title2 'Lincoln';
proc print data=SASHELP.CARS(WHERE=(compress(make)='Lincoln')) noobs;
run;
ods excel options(embedded_titles='yes' sheet_name="SH2" sheet_interval="now");
title;
title 'Sedan';
proc print data=SASHELP.CARS(WHERE=(compress(Type)='Sedan' )) noobs;
run;
title1 '';
title2 'Sports';
proc print data=SASHELP.CARS(WHERE=(compress(Type)='Sports' )) noobs;
run;
title1 '';
title2 'SUV';
proc print data=SASHELP.CARS(WHERE=(compress(Type)='SUV' )) noobs;
run;
ods excel close;
I do not get an error. As always, we need to see the LOG showing your code and the ERROR messages, formatted properly by clicking on the </> icon and pasting the log into that window.
;
Please, I asked you to format the log properly by clicking on the </> icon and pasting it into the window that appears.
1 The SAS System 13:10 Friday, September 24, 2021 1 ;*';*";*/;quit;run; 2 OPTIONS PAGENO=MIN; 3 %LET _CLIENTTASKLABEL='Program (2)'; 4 %LET _CLIENTPROCESSFLOWNAME='Process Flow'; 5 %LET _CLIENTPROJECTPATH=''; 6 %LET _CLIENTPROJECTPATHHOST=''; 7 %LET _CLIENTPROJECTNAME=''; 8 %LET _SASPROGRAMFILE=''; 9 %LET _SASPROGRAMFILEHOST=''; 10 11 ODS _ALL_ CLOSE; 12 OPTIONS DEV=PNG; 13 GOPTIONS XPIXELS=0 YPIXELS=0; 14 FILENAME EGSR TEMP; 15 ODS tagsets.sasreport13(ID=EGSR) FILE=EGSR 16 STYLE=HtmlBlue 17 STYLESHEET=(URL="file:///C:/Program%20Files/SASHome94/SASEnterpriseGuide/7.1/Styles/HtmlBlue.css") 18 NOGTITLE 19 NOGFOOTNOTE 20 GPATH=&sasworklocation 21 ENCODING=UTF8 22 options(rolap="on") 23 ; NOTE: Writing TAGSETS.SASREPORT13(EGSR) Body file: EGSR 24 25 GOPTIONS ACCESSIBLE; 26 /***Get error about sheet_interval="now" ***/ 27 ods excel file="/usr/local/SAS/SASUsers/LabRet/UserDir/report.xlsx" 28 options(embedded_titles='yes' sheet_name="SH1" sheet_interval="none"); 29 title; 30 title 'BMW'; 31 proc print data=SASHELP.CARS(WHERE=(compress(make)='BMW')) noobs; 32 run; NOTE: There were 20 observations read from the data set SASHELP.CARS. WHERE COMPRESS(make)='BMW'; NOTE: PROCEDURE PRINT used (Total process time): real time 0.09 seconds user cpu time 0.09 seconds system cpu time 0.00 seconds memory 3776.53k OS Memory 35012.00k Timestamp 09/24/2021 02:30:49 PM Step Count 156 Switch Count 0 Page Faults 0 Page Reclaims 523 Page Swaps 0 Voluntary Context Switches 8 Involuntary Context Switches 0 Block Input Operations 0 Block Output Operations 0 33 title1 ''; 34 title2 'Jaguar'; 35 proc print data=SASHELP.CARS(WHERE=(compress(make)='Jaguar')) noobs; 36 run; 2 The SAS System 13:10 Friday, September 24, 2021 NOTE: There were 12 observations read from the data set SASHELP.CARS. WHERE COMPRESS(make)='Jaguar'; NOTE: PROCEDURE PRINT used (Total process time): real time 0.05 seconds user cpu time 0.05 seconds system cpu time 0.00 seconds memory 838.25k OS Memory 35268.00k Timestamp 09/24/2021 02:30:49 PM Step Count 157 Switch Count 0 Page Faults 0 Page Reclaims 64 Page Swaps 0 Voluntary Context Switches 28 Involuntary Context Switches 1 Block Input Operations 0 Block Output Operations 0 37 title1 ''; 38 title2 'Lincoln'; 39 proc print data=SASHELP.CARS(WHERE=(compress(make)='Lincoln')) noobs; 40 run; NOTE: There were 9 observations read from the data set SASHELP.CARS. WHERE COMPRESS(make)='Lincoln'; NOTE: PROCEDURE PRINT used (Total process time): real time 0.04 seconds user cpu time 0.04 seconds system cpu time 0.00 seconds memory 723.06k OS Memory 35524.00k Timestamp 09/24/2021 02:30:49 PM Step Count 158 Switch Count 0 Page Faults 0 Page Reclaims 34 Page Swaps 0 Voluntary Context Switches 9 Involuntary Context Switches 0 Block Input Operations 0 Block Output Operations 0 1 The SAS System 14:30 Friday, September 24, 2021 ERROR: Argument now for word option sheet_interval not recognized. Expecting one of these keywords output, table, page, bygroup, bygroups, proc, none or none. 41 42 43 ods excel options(embedded_titles='yes' sheet_name="SH2" sheet_interval="now"); 44 title; 45 title 'Sedan'; 46 proc print data=SASHELP.CARS(WHERE=(compress(Type)='Sedan' )) noobs; 47 run; NOTE: There were 262 observations read from the data set SASHELP.CARS. WHERE COMPRESS(Type)='Sedan'; NOTE: PROCEDURE PRINT used (Total process time): real time 0.90 seconds user cpu time 0.89 seconds system cpu time 0.01 seconds memory 15740.15k 3 The SAS System 13:10 Friday, September 24, 2021 OS Memory 52932.00k Timestamp 09/24/2021 02:30:50 PM Step Count 159 Switch Count 3 Page Faults 0 Page Reclaims 3848 Page Swaps 0 Voluntary Context Switches 27 Involuntary Context Switches 3 Block Input Operations 0 Block Output Operations 0 48 title1 ''; 49 title2 'Sports'; 50 proc print data=SASHELP.CARS(WHERE=(compress(Type)='Sports' )) noobs; 51 run; NOTE: There were 49 observations read from the data set SASHELP.CARS. WHERE COMPRESS(Type)='Sports'; NOTE: PROCEDURE PRINT used (Total process time): real time 0.19 seconds user cpu time 0.19 seconds system cpu time 0.00 seconds memory 1755.31k OS Memory 39364.00k Timestamp 09/24/2021 02:30:50 PM Step Count 160 Switch Count 1 Page Faults 0 Page Reclaims 141 Page Swaps 0 Voluntary Context Switches 19 Involuntary Context Switches 1 Block Input Operations 0 Block Output Operations 0 52 title1 ''; 53 title2 'SUV'; 54 proc print data=SASHELP.CARS(WHERE=(compress(Type)='SUV' )) noobs; 55 run; NOTE: There were 60 observations read from the data set SASHELP.CARS. WHERE COMPRESS(Type)='SUV'; NOTE: PROCEDURE PRINT used (Total process time): real time 0.21 seconds user cpu time 0.21 seconds system cpu time 0.00 seconds memory 2267.50k OS Memory 40132.00k Timestamp 09/24/2021 02:30:50 PM Step Count 161 Switch Count 1 Page Faults 0 Page Reclaims 230 Page Swaps 0 Voluntary Context Switches 16 Involuntary Context Switches 0 Block Input Operations 0 Block Output Operations 0 4 The SAS System 13:10 Friday, September 24, 2021 56 ods excel close; NOTE: Writing EXCEL file: /usr/local/SAS/SASUsers/LabRet/UserDir/report.xlsx 57 58 59 60 GOPTIONS NOACCESSIBLE; 61 %LET _CLIENTTASKLABEL=; 62 %LET _CLIENTPROCESSFLOWNAME=; 63 %LET _CLIENTPROJECTPATH=; 64 %LET _CLIENTPROJECTPATHHOST=; 65 %LET _CLIENTPROJECTNAME=; 66 %LET _SASPROGRAMFILE=; 67 %LET _SASPROGRAMFILEHOST=; 68 69 ;*';*";*/;quit;run; 70 ODS _ALL_ CLOSE; 71 72 73 QUIT; RUN; 74
It works fine for me. I am guessing that perhaps you might have an earlier version of SAS perhaps (that's the only thing I can think of).
When I run
%put &sysvlong;
I get
9.04.01M5P091317
What do you get?
Afaik sheet_interval="now" was added in version 9.4m5.
the 'now' option is only available since the TS1M5 release of SAS9.4
I'm afraid you'll need to use the good old excelxp tagset to accomplish these results and convert the xml afterward to a native xlsx document.
- Cheers -
You need reset these options before the second sheet.
ods excel file="c:\temp\report.xlsx"
options(embedded_titles='yes' sheet_name="SH1" sheet_interval="none");
title;
title 'BMW';
proc print data=SASHELP.CARS(WHERE=(compress(make)='BMW')) noobs;
run;
title1 '';
title2 'Jaguar';
proc print data=SASHELP.CARS(WHERE=(compress(make)='Jaguar')) noobs;
run;
title1 '';
title2 'Lincoln';
proc print data=SASHELP.CARS(WHERE=(compress(make)='Lincoln')) noobs;
run;
ods select none;
ods excel options( sheet_interval="proc");
proc print data=sashelp.class;run;
ods select all;
ods excel options(embedded_titles='yes' sheet_name="SH2" sheet_interval="none");
title;
title 'Sedan';
proc print data=SASHELP.cars(WHERE=(compress(Type)='Sedan' )) noobs;
run;
title1 '';
title2 'Sports';
proc print data=SASHELP.cars(WHERE=(compress(Type)='Sports' )) noobs;
run;
title1 '';
title2 'SUV';
proc print data=SASHELP.cars(WHERE=(compress(Type)='SUV' )) noobs;
run;
ods excel close;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.