Proc导出以更新SAS中的现有Excel工作表?

时间:2016-04-20 11:46:36

标签: excel sas proc

我正在尝试更新(继续添加行)现有的excel文件(如果它在某种程度上可能),但数据不断更换或覆盖。我希望声明选项卡在运行sas时不断更新。添加" REPLACE"也会覆盖数据。任何建议将不胜感激。

proc export
data=hdat.revclaimsmaster 
outfile="\TEST.xlsx"
dbms=excel;
SHEET="Claims";
run;

proc export
data=hdat.nonrevclaimsmaster  
outfile="\TEST.xlsx"
dbms=excel;
SHEET="Claims";
run;

3 个答案:

答案 0 :(得分:0)

你需要"替换"选项:

dbms = excel replace;

答案 1 :(得分:0)

假设您的SAS数据集是本地的并且您使用的是Windows,则可以使用漂亮的SAS宏程序调用 exportToXL 。只需google for it,它附带有关如何设置它的说明。一旦掌握了它,它就像123一样容易。

唯一的警告是, 1.您需要在PC上安装PC SAS才能使用此程序。 2.版本很旧,开发人员没有更新以处理新的Excel工作簿文件格​​式,即它使用.xls而不是.xlsx。那说,如果你对SAS编程很好,你可以像我一样修改程序来处理.xlsx。

HTH, Lobbie

答案 2 :(得分:0)

有几种方法可以做到这一点。但是,它们中没有一个比客观上更好,而不是Superfluous提供的答案 - 在SAS中附加数据集然后重新导出。

  1. 使用DDE执行更新。优点:非常容易更新数据。缺点:几乎不再支持,并且需要excel在与SAS相同的PC上运行。
  2. 使用Excel连接(connect to excel)。优点:连接允许您在适当的位置执行SQL语句,包括插入。缺点:必须符合合理的SAS数据结构,不能进行格式化,不能轻易进行随机插入。 (h / t Roger DeAngelis @ SAS-L指出这个)
  3. 将SAS加载项用于Microsoft Excel。优点:让您可以更轻松地从Excel控制事物,从而实现更强大的格式化选项。缺点:单独的产品必须获得许可,并且由Excel而非SAS驱动(尽管在服务器上,在存储过程中运行SAS代码)。
  4. 从Excel连接到SAS的OLEDB提供程序。与3类似,实际上,控制较少,产品许可证也不同(也许更便宜)。
  5. 导入数据,修改数据,然后使用REPLACE重新导出。优点:SAS易于操作,可控制SAS中的数据。缺点:必须符合SAS​​数据结构,必须再次写出所有行(因此可能很慢)。这大概是多余的建议。