将Excel数据导入SAS,同时电子表格仍然打开

时间:2013-03-15 18:19:46

标签: excel sas

我正在使用SAS和Excel进行演示,并希望能够在Base SAS中运行导入我的屏幕 Excel数据的脚本。

这可能是使用原生SAS例程,还是DDE作为最后的手段?我使用的是Excel 2010和SAS 9.3。

5 个答案:

答案 0 :(得分:3)

您可以使用FILELOCKS选项。 SAS将忽略任何锁定并像往常一样继续。我一直在使用PROC IMPORT。

options filelocks =(“& workbookdir”NONE);

答案 1 :(得分:2)

仅基本SAS无法从Excel工作簿中读取。通过SAS Access to PC File Formats产品(单独许可的组件),SAS可以从最近“保存”的工作簿副本中读取:

proc import datafile='c:\temp\test4sas.xlsx'
     out=test
     replace;
run;

请注意,SAS不会直接从Excel应用程序中读取,而是从工作簿文件本身读取。如果启用了“自动保存”功能,则导入的SAS数据集将包含工作簿中当前“已保存”的内容。

您可能已经在您的站点上获得SAS Access许可(大多数Windows站点都将其作为捆绑包的一部分)。要确认,请运行此选项以查看所有获得许可的产品:

proc setinit;
run;

答案 2 :(得分:1)

认为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;

答案 3 :(得分:0)

我认为DDE对于屏幕数据来说是最明显的解决方案。我不是DDE专家,但鉴于DDE通过与当前运行的Excel流程进行交互来运行,它确实看起来很适合您的结果,尽管它有缺点并且如果没有实际弃用则有效。

另一个合理的解决方案是编写一个宏,将您的屏幕数据导出为CSV,然后调用导入该CSV的SAS例程。您可以从VBA调用SAS(与任何其他程序一样),因此它将集成到您的Excel工作簿中(如果这可以来自许多工作簿,将宏放在您的个人工作簿中,或者如果您需要使用,请带上.xlsm)别人的电脑)。这可能就是我要做的。

最后,还有用于Excel的SAS加载项。 http://support.sas.com/documentation/onlinedoc/addin/index.html我没有经验,但它可能会做你需要的[取决于具体细节]。

答案 4 :(得分:0)

我没有像我那样密切关注,但似乎有一段时间它并没有让我这样做但现在它确实允许我使用Proc Import并在Excel中打开文件。但它的另一个功能是打开另一个版本的Excel,电子表格以只读模式打开。我希望它不会那样做,这就是我遇到这篇文章的方式。我不知道是否重要,但我正在使用PC文件服务器引擎来读取工作表(DBMS = EXCELCS)。

注意:http://support.sas.com/kb/15/547.html表示如果文件是打开而不是关闭,SAS可以获得不同的结果。我有这样的经验,如果电子表格打开,如果工作表关闭,列将被读作与其读取方式不同的类型。