【发布时间】: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 支持部门开票,看看他们是否有解决方法,或者是否在更高版本中进行了更改。