1. 变量label无法正常输出?
解决途径:
增加(dblabel=yes)。
libname xls excel "E:example.xls";
data xls.sheet1 (dblabel=yes);
set test;
run;
libname xls clear;
2. format无效?
解决途径:
第一步,做一份excel模板,将每列数据的格式配置好;
第二步,使用x命令,复制模板。
x 'copy "E:template.xls" "E:output to excel file by libname.xls" & exit';
第三步,将数据输出至"E:output to excel file by libname.xls"中的指定位置。
3. 输出至指定位置?
解决途径:
第一步,打开目标excel,打开“名称管理器”,建立名称为“test_in_xls_1”的变量,并配置该变量定义的区域。保存并退出;
第二步,使用如下代码输出。
libname xls excel "E:example.xls";
proc sql;
drop table xls.test_in_xls_1;
quit;
data xls.test_in_xls_1 (dblabel=yes);
set test;
run;
libname xls clear;
4. sheet1与'sheet1$'n的区别?
data xls.'sheet1$'n; * 指向excel的sheet1 ;
data xls.sheet1; * 指向excel的名称管理器中名为sheet1的变量定义的区域 ;
5. 要输出的数据行数超过65535行?
解决途径:
使用宏,分块输出。
%macro xls_output_macro(sor_tab);
%let flag = %sysfunc(open(&sor_tab,is));
%if &flag. eq 0 %then %do;
%put '数据集不存在';
%end;
%else %do;
%let close = %sysfunc(close(&flag.));
data _null_;
set &sor_tab. nobs=n;
call symput('tot_page', ceil(n/65000));
stop;
run;
libname xls excel "E:input_or_output_filetext.xls";
%do ii = 1 %to &tot_page.;
%let start_obs = %eval_r((&ii.-1)*65000+1);
%let end_obs = %eval_r(&ii.*65000);
data xls.page_&ii. (dblabel=yes);
set &sor_tab.(firstobs=&start_obs. obs=&end_obs.);
run;
%end;
libname xls clear;
%end;
%mend;
*example: %xls_output_macro(sor_tab = test) ;