我在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文件转换为数据集?
答案 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将标题响应详细信息写入您可以检查的文件。