如何将excel文件从SASContenrServer转换为SAS中的数据集

时间:2018-01-16 14:00:26

标签: excel sas sas-macro

我在SASContentServer中有一些excel文件要转换为数据集。

这是我使用的代码

*filename out "/app/sas/test.xlsx";
filename out temp;

%let model_rk_val = "10013";
%let model_id_val = "model";

proc http 
method="get"
url="http://server:port/SASContentServer/repository/default/sasdav/Products/SASModelRisk/ModelRiskMgtMid-Tier/Content/customObject1/&model_rk_val/&model_id_val..xlsx"
webUserName="sasmrmad"
webPassword="xxxxxxx"
out=out;
run;

*libname mip_in "/app/sas/folder";

proc import datafile = out
    DBMS=xlsx
    out=mip_in.vars;
    sheet='vars';       
RUN;

proc import datafile = out
    DBMS=xlsx
    out=mip_in.outest;
    sheet='outest';     
RUN;

如果我使用filename out temp,那么系统会给我一个错误,即tempfile.xlsx丢失,因为filename out temp临时文件在temp文件夹中没有任何扩展名,DBMS=xlsx查找扩展名为的文件。 xlsx,因为我的临时文件没有扩展名,所以会出错。

如果我创建一个像test.xlsx这样的文件并且使用filename out "/app/sas/test.xlsx";系统说文件已损坏,即使我创建了一个新的excel文件,那么错误与文件损坏或文件格式或扩展无效有关。

请告诉我,我该如何解决这个问题,还是可以使用其他方法将我的Excel文件转换为数据集?

1 个答案:

答案 0 :(得分:1)

尝试使用此替代FILENAME TEMP来创建具有特定扩展名的临时文件:

    filename out "%sysfunc(getoption(WORK))/test.xlsx";

并查看the HTTP_TOKENAUTH option,而不是使用webUsername和webPassword。

HTTP调用失败时并不总是很明显。检查& SYS_PROCHTTP_STATUS_CODE宏变量的值,以确保您获得了预期的“200”代码(SAS 9.4M3及更高版本)。或者使用HEADEROUT= option将标题响应详细信息写入您可以检查的文件。