Ошибка при экспорте из SAS в Excel — проблема с запятой

#excel #sas

#excel #sas

Вопрос:

итак, у меня есть подобный код, когда это выполняется

  data t4;
    put new_EMPLID $2000.;
    do until(last.CRSE_ID);
    set t3;
    by CRSE_ID notsorted;
      new_EMPLID = catx(',',new_EMPLID,compress(EMPLID));
    END;
    drop EMPLID;
    run;
  

вывод в SAS

введите описание изображения здесь

ЗАТЕМ «Просмотреть в Excel»

введите описание изображения здесь

Я хочу показать ВОТ ТАК «2234944,2330002» точно так же, как выводится в SAS

Почему Excel меняется, как показано на рисунке? Кто-нибудь знает, как исправить эту проблему???

Я знаю, это проблема cauing, когда я изменил ‘x’, это сработало в Excel.

Комментарии:

1. 000025 хранится как число, поэтому начальные нули удалены. Я вообще не знаком с SAS, но вам нужно сохранить / импортировать это в виде текста, а не числа.

2. Как вы получаете данные в Excel?

3. Я предлагаю экспортировать ваши данные в строковых форматах, таким образом, вы можете определить желаемую точность. Документацию смотрите: support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default /…

4. Не разрешайте Excel автоматически открывать файл CSV. Всегда используйте утилиту импорта текста, чтобы вы могли контролировать, как она интерпретирует столбцы.

Ответ №1:

Какая операционная система, версии SAS и Excel и разрядность каждой из них?

Какой код вы отправили?

Этот пример кода с Proc EXPORT не показывает проблем в Windows 10, SAS 9.4M4 и 64-разрядной версии Excel 2016.

Если у courseId есть только один участник, или если запятые могут быть неверно истолкованы Excel, они будут :). Ваши языковые настройки также могут влиять на отображение в Excel.

 data have; input
courseId employeeId; datalines;
1 2234944
1 2330002
1 1975365
1 2244221
2 1122334
2 2233445
2 3344551
run;

data want;
  do until (last.courseId);
    set have;
    by courseId;
    length attendeeList $2000;
    attendeeList = catx(',',attendeeList,employeeId);
  end;
  drop employeeId;
run;

proc export data=want dbms=excel replace file='c:tempcourse_attendence.xlsx';
run;