Несколько листов с отчетом о процедуре

У меня возникли проблемы с использованием 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;

Я не смог решить эту проблему даже после исследования и изменения вариантов опционов.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
116
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Ваше первое утверждение (ods excel...) определяет несколько вариантов ODS, в частности это: sheet_interval='NONE'

Параметр sheet_interval управляет тем, как механизм ODS выводит отчеты в вашем документе:

  • ТАБЛИЦА (значение по умолчанию) — новый лист для каждой выходной таблицы.
  • НЕТ — сохранить следующий вывод на текущем листе.
  • СТРАНИЦА — новый лист для каждой страницы вывода SAS.
  • PROC — новый лист, начинающийся на границе шага PROC.
  • ПОГРУППЕ — новый лист для каждой группы вывода ПО.
  • СЕЙЧАС — немедленно начать новый лист

В вашем примере вы явно попросили свой механизм 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;

Как уже говорилось: опция интервала листов необходима для первого листа, поскольку у меня есть несколько таблиц, идущих на один лист. Второй лист — это проблема. Когда во втором операторе параметров удаляется опция «sheet_interval», четвертая таблица помещается на первый лист. Мне нужна 4-я таблица, созданная на отдельном листе.

SMW 15.05.2024 13:44

Что ж, извиняюсь, я обновил ответ в соответствии с вашими потребностями.

Gaadek 15.05.2024 14:17

Бинго! Спасибо! Интересно, почему я не смог этого понять... думаю, пора повесить трубку, лол. Спасибо, сэр. Отметьте галочку для вас.

SMW 15.05.2024 14:44

Разве вам не нужно переопределить лист_интервала в тот момент, когда вам нужен новый лист.

ods excel options (embedded_titles='ON' sheet_interval='NOW' sheet_name='Second Tab');

Другие вопросы по теме

Preloadfmt не работает, в SAS нет видимых ошибок или предупреждений
Значения основаны на предыдущих строках: когда x>2, повторяем 1, когда x=0 для 3 последовательных строк, повторяем 0
Не удалось вызвать поток Power Automate «При получении HTTP-запроса», в котором есть «Конкретные пользователи в моем клиенте» из нашего кода
Преобразование в десятичное число без обрезки нулей
Как передать параметр даты для запроса во временной (рабочей) таблице?
Как я могу условно обрабатывать макроцикл %DO? (САС)
SAS — используйте наборы тегов ODS и макропеременные для печати нескольких наборов данных в Excel
Макрос SAS, который перебирает векторы вместо переменных
Этот код SAS выполняет 10C9 как для средних, так и для CV для переменных ширины и длины. Есть ли способ выполнить 10C8, вплоть до 10C1, в том же коде SAS?
Совокупные данные по кредитам с датами для данной фирмы в SAS