Proc 导出以更新 SAS 中的现有 excel sheet?

Proc export to update an existing excel sheet in SAS?

我正在尝试更新(继续添加行)现有的 excel 文件(如果可能的话),但数据不断被替换或覆盖。我希望 Claims 选项卡在 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;

您需要 "replace" 选项:

dbms = excel replace;

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

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

HTH, 大堂

有几种方法可以做到这一点。 None 其中客观上比 Superfluous 提供的答案更好 - 附加到 SAS 中的数据集然后重新导出。

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