我一直坚持在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
部分。
关于我在互联网上发现的类似问题的解决方案/解释,例如: here或there,(excel)文件未打开,也不是太大(完全相反)。
要添加一些混淆(或提示?)我必须说我现在坚持文件名版本,因为它确实经常运行。但我不知道为什么;有些日子批次工作,有时不工作。代码总是一样的。
这可能是访问权限的隐藏问题吗?当我尝试导出.xls,.csv或.txt时,我得到ERROR: Insufficient authorization to access /path/file.*.
同样,只有在我使用批次时才会出现这些问题。
我需要代码与批处理一起运行,因为我不想在凌晨5点出现工作只是为了按F3。 任何帮助将不胜感激,也关于我可以在批处理文件中检查的位置/内容(虽然这可能有点高于我的头脑和权限)或者我应该在日志文件中检查什么。谢谢!
v2:Imho额外的'/'是一个症状,而不是问题。我要求提供一些提示和技巧,以使SAS提供有助于查找实际问题的不同错误消息。
v3:感谢所有评论。我越来越相信它是一个许可问题。我尝试了Quentins方法并导出到工作目录中。我现在也开始与我们的IT部门合作,看看他们想出了什么。
答案 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;