【问题标题】:How to convert excel file from SASContenrServer to dataset in SAS如何将 SASContenrServer 中的 excel 文件转换为 SAS 中的数据集
【发布时间】:2018-01-16 14:00:26
【问题描述】:

我在 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 丢失,因为文件名 out temp 在临时文件夹中创建了一个没有任何扩展名的临时文件,DBMS=xlsx 查找扩展名为 .xlsx 的文件,因为我的临时文件没有扩展名,它会报错。

如果我创建一个像 test.xlsx 这样的文件并使用filename out "/app/sas/test.xlsx";system 表示该文件已损坏,即使我创建了一个新的 excel 文件,错误与文件已损坏或文件格式或扩展名无效的错误相同。

您能告诉我如何解决这个问题,或者我可以使用其他方法将我的 excel 文件转换为数据集吗?

【问题讨论】:

  • 几个问题。 1. 下载后可以用Excel打开文件吗? 2. 请粘贴您收到的实际错误。 3. 在 Linux 控制台上,执行 head /app/sas/test.xlsx 并确保您拥有看起来像 Excel 文件的文件——在此处添加结果。
  • 1) 不,我无法打开 Excel 表。
  • 错误:打开 XLSX 文件时出错 -> /app/sastest.xlsx 。它要么不是 Excel 电子表格,要么已损坏。错误代码=8014900A(文件名为“/app/sas/test.xlsx”)
  • @DomPazz 你的意思是文件输出“head /app/sas/test.xlsx”;
  • 我假设您可以访问系统操作系统。在命令提示符下,键入 head /app/sas/test.xlsx。或者,在文本编辑器中打开文件并查看它的外观。如果它是 XLSX 文件,那么您应该无法读取它。 Excel 无法打开文件的事实告诉我,这不是 XLSX 引擎的问题,而是文件创建的问题。

标签: excel sas sas-macro


【解决方案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 将标头响应详细信息写入您可以检查的文件。

【讨论】:

  • 先生,这个功能是做什么的?文件名输出 "%sysfunc(getoption(WORK))/test.xlsx";
  • 该函数获取当前 WORK 文件夹路径并附加文件名 (test.xlsx)。然后将 fileref 分配给该路径。结果是一个带有 XLSX 扩展名的文件,PROC IMPORT 可以识别,只要文件内容是真正的 XLSX 文件。
猜你喜欢
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
相关资源
最近更新 更多