【问题标题】:Deleting data from an Excel spreadsheet using SAS使用 SAS 从 Excel 电子表格中删除数据
【发布时间】:2014-04-02 12:30:51
【问题描述】:

我有一个看起来很简单的问题。虽然我在这里和互联网上寻找解决方案并尝试了一些应该可以解决问题的方法,但没有任何效果。

我已使用此代码从 SAS 导出到 Excel:

libname xls excel '..\Test3.xlsx' scan_text = no ver=2007;

proc datasets lib = xls nolist;
   delete Sweden;
quit;

data xls.Sweden;
   set WORK.falcon_cases_2;
run;

libname xls clear;

然后使用此代码附加另一个表:

libname xls excel '..\Test3.xlsx' scan_text = no ver=2007 ;

proc append base = xls.Sweden
            data = WORK.falcon_cases_NorDen_2;
run;

libname xls clear;

我必须这样做,因为这两个表的数据来自不同的 SAS 服务器数据表。

问题是这部分,

proc datasets lib = xls nolist;
   delete Sweden;
quit;

仅删除仅扩展到放入电子表格的第一个数据集的命名范围。因此,如果第一个表是 10 行,第二个是 15 行,则在电子表格中加起来最多为 25 行。删除完成后,仅清除了前 10 行。 我试过使用

proc sql noprint; 
   drop table xls.'Sweden$'n;
quit;

但结果是一样的。两种解决方案似乎都仅限于在指定范围内清除数据。

有什么建议吗?

【问题讨论】:

  • 最后两个proc datasets 步骤相同
  • 可以在导出到 Excel 之前将数据集一起附加到单个 SAS 数据集吗?
  • 很遗憾没有,因为那本来是理想的。
  • 谢谢mjsqu。我现在用其他代码编辑了这篇文章。
  • 那么您可能需要通过 DDE 或 VB 脚本或类似的方式使用 excel 命令来删除选项卡。工作表和范围在概念上与 SAS 相同,并且最初由 SAS 创建工作表,您似乎被卡住了。您可以考虑向 SAS 支持部门开票,看看他们是否有解决方法,或者是否在更高版本中进行了更改。

标签: excel sas


【解决方案1】:

Joe - 你的最新评论给了我一个想法。如果我结合导出方法,似乎可以解决这个问题。我使用

导出了第一个表
PROC EXPORT DATA= WORK.falcon_cases_2
OUTFILE= "..\Test3.xlsx" 
DBMS=XLSX REPLACE;
SHEET="Sheet1"; 
RUN;

然后使用与之前相同的附加代码附加第二个表。所以下次 PROC EXPORT 运行时,它会替换所有内容,从而解决我的问题 :)

【讨论】:

    猜你喜欢
    • 2010-11-19
    • 2012-04-10
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多