SAS DDE导入与导出文件

何为DDE

DDE是一种传统方法,SAS不鼓励使用DDE。 相反,请考虑较新的SAS功能支持的替代方案。

当您现代化到集中式SAS环境时,请注意几个挑战。 例如,如果您的SAS会话在远程计算机(通常是未在Windows上运行的计算机)上运行,则SAS无法使用DDE与本地Microsoft Excel应用程序进行通信。 DDE仅在同一台计算机上的两个Windows进程(SAS和Excel)之间工作。

但是,只要您将SAS软件及其DDE合作伙伴(通常是Microsoft Excel)置于同一台Windows PC上运行,使用DDE的SAS程序仍然可以正常工作。

如果您的进程依赖于DDE但需要在很短的时间内转移到客户端/服务器SAS环境,请采用以下方法。 使用SAS for Windows维护指定的计算机以执行DDE基本工作,即使将其他进程移至企业SAS环境也是如此。

动态数据交换(DDE)是一种在Windows应用程序之间动态交换信息的方法。 DDE使用客户端/服务器关系使客户端应用程序能够从服务器应用程序请求信息。 SAS始终是客户。在此角色中,SAS从服务器应用程序请求数据,将数据发送到服务器应用程序或向服务器应用程序发送命令。

您可以将DDE与DATA步骤,SAS宏工具,SAS / AF应用程序或请求和生成数据的SAS的任何其他部分一起使用。 DDE有许多潜在用途。一种用途是从Windows电子表格或数据库应用程序中获取数据。

您可以通过访问以下URL来访问动态数据交换(DDE)支持的应用程序。支持Word和Excel应用程序。不支持PowerPoint应用程序。

注意:许多Windows程序(包括SAS)现在都支持OLE以促进应用程序之间的通信。如果需要与支持OLE的应用程序共享数据,您可能更喜欢使用SAS内置的OLE支持。有关更多信息,请参阅关于OLE。

 DDE语法

要在SAS中使用DDE,请使用以下语法发出FILENAME语句:

FILENAME fileref DDE  'DDE-triplet' <DDE-options>;

fileref

是一个有效的fileref(如引用外部文件中所述)。

DDE

是设备类型关键字,告诉SAS您要使用动态数据交换。

'DDE-triplet'

是DDE外部文件的名称。

 

 

 

DDE示例概述

本节提供了在Windows下使用DDE和SAS的几个示例。 这些示例使用Microsoft Excel和Microsoft Word作为DDE服务器,但任何支持DDE作为服务器的应用程序都可以与SAS通信。

在运行这些示例之前,必须先调用Microsoft Excel和Microsoft Word,然后打开示例中使用的电子表格或文档。

注意:DDE示例包含在您从"帮助"菜单访问的特定于主机的示例程序中。

 

使用X命令打开DDE服务器

可以使用SAS代码中的X命令打开DDE服务器应用程序。 必须关闭XWAIT和XSYNC选项。可以加入x=sleep( )确保EXCEL或者WORD完全打开。

选项noxwait noxsync;

x '"C:\program files\microsoft office\office14\excel.exe"';

如果路径包含空格,则路径周围需要双引号。 单引号用于X命令。

 

使用DDE从Microsoft Excel读取数据

您可以使用DDE将Excel应用程序中的数据读入SAS,如下例所示:

filename monthly  dde 'excel|sheet1!r1c1:r10c3';

data monthly;

   infile monthly;/*导入数据*/  输出数据是file

   input var1 var2 var3;/*要导入的变量名*/ 输出数据是put

run;

proc print;

run;

                                                 

使用DDE从Microsoft Word读取数据

                                                 

此示例从给定书签的Microsoft Word文档中读取数据。

                                                 

filename testit dde 'winword|"c:\temp\testing.doc"!MARK' notab;

 

libname workdir 'c:\temp';

 

/* Get ready to read the first bookmark.  */

 

data workdir.worddata;

   length wordnum $5;

   infile testit;

   input wordnum $;

run;

 

proc print;

run;

 

阅读遗漏数据

此示例说明从名为SHEET1的Excel电子表格中读取缺少的数据。 此示例读取第1列到第3列以及第10行到第20行中的数据。某些数据单元可以为空白。 以下是一些数据的示例:

...

10   John    Raleigh      Cardinals

11   Jose    North Bend   Orioles

12   Kurt    Yelm         Red Sox

13   Brent                Dodgers

...

以下是可以将这些数据正确读取到SAS数据集中的代码:

filename mydata

  dde 'excel|sheet1!r10c1:r20c3';

data in;

   infile mydata dlm='09'x notab  dsd missover;

   informat name $10. town $char20.

            team $char20.;

   input name town team;

run;

proc print data=in;

run;

在此示例中,NOTAB选项告诉SAS不要将从Excel应用程序发送的选项卡转换为空白因此,制表符可用作数据值之间的分隔符。 DLM =选项指定分隔符,'09'x是制表符的十六进制表示。 DSD选项指定两个连续的分隔符表示缺失值。默认分隔符是逗号。有关DSD选项的更多信息,请参阅SAS系统选项参考。如果SAS程序在所有INPUT语句变量的当前行中找不到值,则MISSOVER选项会阻止SAS程序进入新的输入行。使用MISSOVER选项,当INPUT语句到达当前记录的末尾时,预期但未找到的值将设置为缺失。


DDE导出SAS数据中的变量

options noxwait noxsync;
x "C:\Users\线宝\Desktop\123.xlsx";

data _null_;
    x=sleep(5);
run;

data test1;
    set sashelp.class;
run;

filename rrr  dde 'excel|sheet1!r1c1:r10c10';

data test2;
    set test1; /*读入数据集*/
    file rrr; /*打开excel*/
    put name sex;  /*输出相关变量*/
run;



全部评论

相关推荐

10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务