data _null_;
call symputx('ts','a b');
run;
proc export data=have
outfile='path\file.xlsx';
sheet="&ts.";
run;
但是这会创建一个名为a_b
的工作表(原始空格将替换为_
。
怎么会发生这种情况?
答案 0 :(得分:4)
这与SAS的proc export
中的工作方式有关。它在幕后所做的是创建一个libname
,然后创建一个数据集。在正常(validmemname=compat
)规则下,数据集名称中可能没有空格。有一个选项(validmemname=extend
)告诉SAS允许空格(然后使用named literal
访问空格,即"a b"n
(n告诉SAS它是一个名字),但它似乎proc export(和libname本身)不听。
但是,在目前,有一种解决方法:如果您使用的是SAS 9.4 TS1M1或更高版本,则可以在导出中使用dbms=xlsx
。这使用了与默认excel
(使用Microsoft的JET引擎)不同的引擎,并且它可以轻松地允许空间。
答案 1 :(得分:0)
只需使用DBMS = XLSX选项,您就可以在工作表名称中包含空格。
proc export data=sashelp.class
outfile='class.xlsx'
dbms=xlsx
;
sheet="A B";
run;