У меня возникли проблемы с использованием ODS Excel с отчетом о процессах. По какой-то причине я не могу успешно создать один файл Excel с несколькими листами с помощью отчета Proc. Первый лист содержит несколько таблиц и сам по себе работает нормально. Как только я пытаюсь добавить новый лист, выдается ошибка о том, что оператор параметров не распознан.
ods excel file = "C:\Users\me\desktop\_Draft_&stamp..xlsx"
options (embedded_titles='ON' sheet_interval='NONE' sheet_name='First Tab')
;
Title j=left height=16pt 'Title1';
proc report data=set1;
run;
Title j=left height=16pt 'Title2';
proc report data=set2;
run;
Title j=left height=16pt 'Title3';
proc report data=set3;
run;
ods excel options (embedded_titles='ON' sheet_name='Second Tab');
Title j=center height=16pt 'Title4';
proc report data=set4 nowd;
column Year Qtr ('Category1' va1 var2 var3)
('Category2' va4 var5 var6);
define Year / display;
define Quarter / display;
define var1 / display;
define var2 / display;
define var3 / display;
define var4 / display;
define var5 / display;
define var6 / display;
run;
ods excel close;
Я не смог решить эту проблему даже после исследования и изменения вариантов опционов.





Ваше первое утверждение (ods excel...) определяет несколько вариантов ODS, в частности это: sheet_interval='NONE'
Параметр sheet_interval управляет тем, как механизм ODS выводит отчеты в вашем документе:
В вашем примере вы явно попросили свой механизм ODS не создавать новый лист. Итак, несмотря на то, что вы указали новое имя листа для своего второго отчета о процедуре, оно не создано, поскольку параметрsheet_interval = 'NONE' все еще применим.
Решение состоит в том, чтобы изменить значение этой опции при определении нового листа, например:
ods excel file = "C:\Users\me\desktop\_Draft_&stamp..xlsx"
options (embedded_titles='ON' sheet_interval='NONE' sheet_name='First Tab')
;
*-- Define here all the proc reports to output in the 1st sheet --*;
proc report
...
run;
proc report
...
run;
*-- Define a new sheet, ensuring with sheet_interval that ODS output will target the new sheet --*;
ods excel options (embedded_titles='ON' sheet_interval='NOW' sheet_name='Second Tab');
proc report
...
run;
ods excel close;
Что ж, извиняюсь, я обновил ответ в соответствии с вашими потребностями.
Бинго! Спасибо! Интересно, почему я не смог этого понять... думаю, пора повесить трубку, лол. Спасибо, сэр. Отметьте галочку для вас.
Разве вам не нужно переопределить лист_интервала в тот момент, когда вам нужен новый лист.
ods excel options (embedded_titles='ON' sheet_interval='NOW' sheet_name='Second Tab');
Как уже говорилось: опция интервала листов необходима для первого листа, поскольку у меня есть несколько таблиц, идущих на один лист. Второй лист — это проблема. Когда во втором операторе параметров удаляется опция «sheet_interval», четвертая таблица помещается на первый лист. Мне нужна 4-я таблица, созданная на отдельном листе.