在电子表格打开时将Excel数据导入SAS
我正在使用SAS和Excel进行演示,希望能够在基本SAS中运行脚本,导入屏幕上的Excel数据在电子表格打开时将Excel数据导入SAS,excel,sas,Excel,Sas,我正在使用SAS和Excel进行演示,希望能够在基本SAS中运行脚本,导入屏幕上的Excel数据 这是否可能使用本机SAS例程或DDE作为最后手段?我正在使用Excel 2010和SAS 9.3 仅基本SAS无法从Excel工作簿中读取。SAS Access to PC File Formats产品是一个单独许可的组件,SAS可以从最近保存的工作簿副本中读取: proc import datafile='c:\temp\test4sas.xlsx' out=test repl
这是否可能使用本机SAS例程或DDE作为最后手段?我正在使用Excel 2010和SAS 9.3 仅基本SAS无法从Excel工作簿中读取。SAS Access to PC File Formats产品是一个单独许可的组件,SAS可以从最近保存的工作簿副本中读取:
proc import datafile='c:\temp\test4sas.xlsx'
out=test
replace;
run;
请注意,SAS不会直接从Excel应用程序读取,而是从工作簿文件本身读取。如果已启用自动保存功能,则导入的SAS数据集将包含当前保存在工作簿中的内容
您很可能在您的站点上获得SAS访问许可,大多数Windows站点都将其作为捆绑包的一部分。要确认,请运行此命令查看所有许可的产品:
proc setinit;
run;
无法仅从Excel工作簿读取基本SAS。SAS Access to PC File Formats产品是一个单独许可的组件,SAS可以从最近保存的工作簿副本中读取:
proc import datafile='c:\temp\test4sas.xlsx'
out=test
replace;
run;
请注意,SAS不会直接从Excel应用程序读取,而是从工作簿文件本身读取。如果已启用自动保存功能,则导入的SAS数据集将包含当前保存在工作簿中的内容
您很可能在您的站点上获得SAS访问许可,大多数Windows站点都将其作为捆绑包的一部分。要确认,请运行此命令查看所有许可的产品:
proc setinit;
run;
我认为DDE将是屏幕数据最明显的解决方案。我不是DDE专家,但考虑到DDE是通过与当前运行的Excel流程交互来运行的,因此它显然是为您的结果量身定做的,尽管它存在缺点,并且如果不是被实际弃用的话,也会非常有效 另一个合理的解决方案是编写一个宏,将屏幕上的数据导出到CSV,然后调用一个SAS例程导入该CSV。您可以像其他任何程序一样从VBA调用SAS,因此,如果可以从许多工作簿调用SAS,它将集成到您的Excel工作簿中,将宏放入您的个人工作簿中,或者如果您需要使用其他计算机,则带上.xlsm。这可能就是我要做的
最后,还有用于Excel的SAS加载项。我没有这方面的经验,但它可能会满足您的需要[取决于具体细节]。我认为DDE将是屏幕数据最明显的解决方案。我不是DDE专家,但考虑到DDE是通过与当前运行的Excel流程交互来运行的,因此它显然是为您的结果量身定做的,尽管它存在缺点,并且如果不是被实际弃用的话,也会非常有效 另一个合理的解决方案是编写一个宏,将屏幕上的数据导出到CSV,然后调用一个SAS例程导入该CSV。您可以像其他任何程序一样从VBA调用SAS,因此,如果可以从许多工作簿调用SAS,它将集成到您的Excel工作簿中,将宏放入您的个人工作簿中,或者如果您需要使用其他计算机,则带上.xlsm。这可能就是我要做的
最后,还有用于Excel的SAS加载项。我没有这方面的经验,但它可能会满足您的需要[取决于具体的细节]。认为DDE是您在这里的最佳选择-下面的代码应该可以完成相应的修改:
filename xlSheet1 dde "Excel|C:\Location_of_excel_file\[demo.xlsx]Sheet1!R2C1:R40C2";
data mydataset;
infile xlSheet1 dlm='09'x notab dsd missover;
input var1:$15. var2:$15.;
run;
在这里,认为DDE是您的最佳选择-以下代码应根据需要进行适当的修改:
filename xlSheet1 dde "Excel|C:\Location_of_excel_file\[demo.xlsx]Sheet1!R2C1:R40C2";
data mydataset;
infile xlSheet1 dlm='09'x notab dsd missover;
input var1:$15. var2:$15.;
run;
您可以使用FILELOCKS选项。SAS将忽略任何锁定,并照常进行。我一直在PROC IMPORT中使用它
选项filelocks=&workbookdir-NONE 您可以使用FILELOCKS选项。SAS将忽略任何锁定,并照常进行。我一直在PROC IMPORT中使用它
选项filelocks=&workbookdir-NONE 我没有尽可能地关注,但似乎有一段时间它不允许我这么做,但现在它确实允许我在Excel中打开文件时使用Proc Import。但是,它还可以打开另一个版本的Excel,并以只读模式打开电子表格。我希望它不会那样做,这就是我看到这篇文章的原因。我不知道这是否重要,但我正在使用PC文件服务器引擎读取工作表DBMS=EXCELCS
注意:表示如果文件处于打开状态而不是关闭状态,SAS可能会得到不同的结果。我曾经有过这样的经验,如果电子表格打开,一列将被视为与工作表关闭时不同的类型。我没有尽可能地密切关注,但似乎有一段时间它不允许我这样做,但现在它允许我在Excel中打开文件时使用Proc Import。但是,它还可以打开另一个版本的Excel,并以只读模式打开电子表格。我希望它不会那样做,这就是我看到这篇文章的原因。我不知道这是否重要,但我正在使用PC文件 读取工作表DBMS=EXCELCS的服务器引擎
注意:表示如果文件处于打开状态而不是关闭状态,SAS可能会得到不同的结果。我有过这样的经验,如果电子表格打开,列的读取方式将与工作表关闭时的读取方式不同。FYI:SAS Excel加载项是SAS Enterprise BI Server产品的一部分,其中还包括对PC文件格式的访问。换句话说,它不是基本SAS。我不知道有什么计划反对DDE。。但这并不是我所同意的最稳健的方法。出于演示目的,我认为实施起来很快/灵活。仅供参考:SAS Excel加载项是SAS Enterprise BI Server产品的一部分,它还包括对PC文件格式的访问。换句话说,它不是基本SAS。我不知道有什么计划反对DDE。。但这并不是我所同意的最稳健的方法。为了演示的目的,我认为这将是一个很好的快速/灵活的实现..这是否存在于Windows下?我只在Unix和Z/OS中看到了这方面的证据。我想这在excel中不起作用吧?不过答案很有趣。。以前从未听说过这个选项。我使用它的方式是:使用winders打开EXCEL工作簿。摆弄它,保存它,但让它打开。运行进程导入程序。。。如果使用默认文件锁定,则无法完成导入,因为excel已将其锁定。使用filelocks选项NONE时,读取工作正常,只要我记得保存,就可以了。在Windows中不工作-错误13-12:无法识别的SAS选项名称filelocks。Windows下是否存在这种情况?我只在Unix和Z/OS中看到了这方面的证据。我想这在excel中不起作用吧?不过答案很有趣。。以前从未听说过这个选项。我使用它的方式是:使用winders打开EXCEL工作簿。摆弄它,保存它,但让它打开。运行进程导入程序。。。如果使用默认文件锁定,则无法完成导入,因为excel已将其锁定。使用filelocks选项NONE时,读取工作正常,只要我记得保存,一切正常。在Windows中不工作-错误13-12:无法识别SAS选项名称filelocks。