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

How to convert excel file from SASContenrServer to dataset in SAS

我想将 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 在临时文件夹中创建了一个没有任何扩展名的临时文件并且 DBMS=xlsx 正在寻找一个文件扩展名为 .xlsx 并且因为我的临时文件没有扩展名所以会出错。

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

请问我该如何解决这个问题,或者是否有任何其他方法可以将我的 excel 文件转换为数据集?

试试这个而不是 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 将 header 响应详细信息写入您可以检查的文件。