Sas 将数据输出到excel时,图纸名称包含空格
但这将创建一个名为a_b的图纸。原始空间将替换为_Sas 将数据输出到excel时,图纸名称包含空格,sas,Sas,但这将创建一个名为a_b的图纸。原始空间将替换为_ 这怎么会发生 这与SAS的proc导出中的工作方式有关。它在幕后做的是创建一个libname,然后创建一个数据集。在正常validmemname=compat规则下,数据集名称中可能没有空格。有一个选项validmemname=extend告诉SAS允许使用命名文字访问的空间,即bn n告诉SAS它是一个名称,但proc export和libname本身似乎不听这个 但是,在今天,有一种解决方法:如果您使用的是SAS 9.4 TS1M1或更高版
这怎么会发生 这与SAS的proc导出中的工作方式有关。它在幕后做的是创建一个libname,然后创建一个数据集。在正常validmemname=compat规则下,数据集名称中可能没有空格。有一个选项validmemname=extend告诉SAS允许使用命名文字访问的空间,即bn n告诉SAS它是一个名称,但proc export和libname本身似乎不听这个
但是,在今天,有一种解决方法:如果您使用的是SAS 9.4 TS1M1或更高版本,则可以在导出中使用dbms=xlsx。它使用的引擎与默认excel不同,默认excel使用的是Microsoft的JET引擎,它允许轻松使用空格。只需使用DBMS=XLSX选项,就可以在工作表名称中包含空格
data _null_;
call symputx('ts','a b');
run;
proc export data=have
outfile='path\file.xlsx';
sheet="&ts.";
run;
这就是为@W_ee发明下划线的地方,以减少在文件名、变量名等中使用空格的诱惑。每个人都同意这一点,直到微软允许空白、破折号等出现在不应该出现的地方,把我们惯坏了;称为symputx'ts','ab';跑等于设ts=ab@DirkHorsten,但在excel中可以使用带空格的工作表名称。是的,它是,用户喜欢它:
proc export data=sashelp.class
outfile='class.xlsx'
dbms=xlsx
;
sheet="A B";
run;