在excel sas中导出导出时标签出错

时间:2016-11-10 13:17:22

标签: sas

我有一些数据集。 (name - table,field - Field1 label =" current.field") 当我做的时候

proc export data=work.table label;
outfile = 'bla bla';
DBMS=Excelcs;
run;

我收到错误:

CLI execute error: [Microsoft][ODBC Excel 
       Driver] 'current.field' is not a valid name.  Make sure that it does not include 
       invalid characters or punctuation and that it is not too long..

我知道问题出在标签上 - 它包含"。"。但我需要这个标签。有谁知道如何解决这个问题?比你。

2 个答案:

答案 0 :(得分:0)

您可以在SAS中执行的一项操作是修改这些标签,以便它们可以与Excel驱动程序很好地配合使用。以下xl_label()宏将扫描您的表并从标签中删除任何句点(。)。

/* sample data */
data work.table;
  label x ='test1.invalid' y='test2.invalid';
  x=1; y='age';
run;

%macro xl_label(lib=,ds=);
  /* get labels */
  ods output variables=vars(keep=variable label); 
  proc contents data=&lib..ds; run;

  data _null_; set vars;
    /* modify labels to make them valid for excel */
    label=tranwrd(label,'.','_');
    /* send to macro variable array */
    call symputx(cats('label',_n_)
      ,"label "!!variable!!'="'!!label!!'";'
      ,'l');
  run;

  /* update table metadata */
  proc datasets nolist library=&lib;
    modify &ds;
  %local x;
  %let x=1;
  %do %while (%symexist(label&x));
    &&label&x /* label statements */
    %let x=%eval(&x+1);
  %end;
%mend;

%xl_label(lib=work, ds=table);

答案 1 :(得分:0)

如果您在Excel(第2行)中需要带有句点(。)的SAS标签,则可以尝试使用此blog post中列出的方法。

只需将label关键字添加到proc导出步骤,如下所示:

/* send data */
PROC EXPORT DATA=&libds OUTFILE=_webout DBMS=&type REPLACE LABEL; 
run;

然后,在设置Web查询时,确保您的目标是第2行中的单元格(例如A2)。这对我来说很好,如下: example excel results