См. В нижней части поста для образцов данных.
Одним из эффективных способов создания экспорта, который Excel будет легко открывать и отображения встроенных строк новой строки, является использование XML.
libname xmlout xmlv2 'c:\temp\want.xml';
data xmlout.want;
set have;
run;
libname xmlout;
В Excel (365) сделать Файл / Открыть, выберите файл want.xml
, а затем выберите As an XML table
в дополнительном диалоговом окне Open XML
.
Другие способы
Существуют и другие способы перемещения данных SAS в форму, которую Excel может анализировать. Proc EXPORT создаст текстовый файл со встроенными символами возврата каретки в символьных переменных (для которых в Excel используются новые строки)
proc export dbms=csv data=have label replace file='c:\temp\want.csv';
run;
Проблема экспорта заключается в том, что Excel не сможет правильно импортировать данные с помощью своих мастеров. Может быть решение VBS для чтения экспорта, но это, вероятно, больше проблем, чем стоит.
Другой формой экспорта является dbms=excel
, который создает .xlsx
файлов:
proc export dbms=excel data=have label replace file='c:\temp\want.xlsx';
run;
Этот экспорт может быть открыт в Excel, и все столбцы будут правильными. Однако при первоначальном представлении значения данных в ячейках со встроенными символами возврата каретки символ новой строки не отображается. Дальнейшее изучение в режиме редактирования F2
покажет, что эти встроенные новые строки есть, а нажатие клавиши Enter (для принятия изменений) приведет к тому, что в представлении ячейки отобразятся встроенные новые строки. Вы не хотите, чтобы F2 отображал каждую ячейку, как ожидалось.
Пример данных
data have (label="Lines within stanza are separated by newline character");
attrib
id length=8 label='Identity'
name length=$50 label='Poem name'
auth length=$50 label='Author'
stanza1-stanza20 length=$250;
;
array stz stanza:;
id + 1;
section = 1;
infile cards eof=last;
do while (1=1);
linenum + 1;
input;
select;
when (_infile_ = '--') leave;
when (linenum = 1) name = _infile_;
when (linenum = 2) auth = _infile_;
when (_infile_ = '') section + 1;
otherwise stz(section) = catx('0d'x, stz(section), _infile_);
end;
end;
last:
output;
datalines4;
Trees
Joyce Kilmer
I think that I shall never see
A poem lovely as a tree.
A tree whose hungry mouth is prest
Against the earth’s sweet flowing breast;
A tree that looks at God all day,
And lifts her leafy arms to pray;
A tree that may in Summer wear
A nest of robins in her hair;
Upon whose bosom snow has lain;
Who intimately lives with rain.
Poems are made by fools like me,
But only God can make a tree.
--
;;;;
run;