为什么我在SAS的xlsx导出文件路径中得到额外的'/'? (通过批处理)

时间:2017-05-05 12:55:40

标签: batch-file sas export-to-excel

我一直坚持在SAS中导出文件。这是一个我认为我已经解决的问题,然后不是,然后是,等等。无论如何,这是我的问题。当我想导出像这样的.xlsx文件时

...
options validvarname=any;
filename xlsxfile "/path/file.xlsx";

proc export data=work.mydata
  dbms=xlsx
  outfile=xlsxfile replace;
  sheet="historical data";
run;

发生以下情况。当我“手动”执行它时运行正常,即只运行程序。但是,当我通过批处理时,我得到了

Error creating XLSX file -> /path//file.xlsx .  It is either not an Excel spreadsheet or it is damaged.   Error code=8000101D

我使用五种不同的方式导出宏,文件名(如此处)或直接在proc导出语句中寻址文件。插入%put _user_;表示问题不是宏/文件名,而是proc export部分。

关于我在互联网上发现的类似问题的解决方案/解释,例如: herethere,(excel)文件未打开,也不是太大(完全相反)。

要添加一些混淆(或提示?)我必须说我现在坚持文件名版本,因为它确实经常运行。但我不知道为什么;有些日子批次工作,有时不工作。代码总是一样的。

这可能是访问权限的隐藏问题吗?当我尝试导出.xls,.csv或.txt时,我得到ERROR: Insufficient authorization to access /path/file.*.

同样,只有在我使用批次时才会出现这些问题。

我需要代码与批处理一起运行,因为我不想在凌晨5点出现工作只是为了按F3。 任何帮助将不胜感激,也关于我可以在批处理文件中检查的位置/内容(虽然这可能有点高于我的头脑和权限)或者我应该在日志文件中检查什么。谢谢!

v2:Imho额外的'/'是一个症状,而不是问题。我要求提供一些提示和技巧,以使SAS提供有助于查找实际问题的不同错误消息。

v3:感谢所有评论。我越来越相信它是一个许可问题。我尝试了Quentins方法并导出到工作目录中。我现在也开始与我们的IT部门合作,看看他们想出了什么。

1 个答案:

答案 0 :(得分:0)

当我尝试使用PROC IMPORT时,我遇到类似的问题,文件名获得额外的斜杠。和你一样,我会尝试一些似乎有用的不同的东西,然后在批处理模式下,相同的代码不会起作用。我不知道根本问题是什么。我找到的一个解决方法是将文件名放在一个宏变量中,然后在PROC IMPORT / EXPORT中引用该宏变量 - 就像这样:

%let xlsxfile=/path/file.xlsx;

proc export data=work.mydata
  dbms=xlsx
  outfile="&xlsxfile" replace;
  sheet="historical data";
run;