2016-08-16 53 views
1

问:我怎样才能导出数据集到Excel工作簿(最好的.xlsx)的各个选项卡的子集,但不运行PROC EXPORT几次?SAS:导出数据子集,以单独的工作簿选项卡在Excel


我的解决方案

该数据集包含15个指标。不幸的是,这些指标没有可以被索引的名字。这意味着我不能将导出过程放入一个循环遍历计数器15次的宏,并将该名称附加到索引中。该指标是(不是真的),比如像“车”,“车”,“自行车”,“恐龙”等

我想出了解决的办法是这样的:

proc export data = data_set 
       (where = (indicator = "car")) 
      outfile = "c:\workbook.xlsx" 
      dbms = xlsx replace; 
      sheet = car; 
run; 

... 

proc export data = data_set 
       (where = (indicator = "dinosaur")) 
      outfile = "c:\workbook.xlsx" 
      dbms = xlsx replace; 
      sheet = dinosaur; 
run; 

然而,这显然是低效的,并且要求进行某种自动化。

+0

你有什么版本的SAS?如果9.4 ODS Excel可以自动使用,否则使用Tagsets,但它会创建一个xml而不是xlsx文件。 – Reeza

+0

我正在使用SAS 9.4。我不确定我有什么其他产品或维护更新。我将如何检查?感谢您提出问题,这是我在提问时应该记得提供的信息。 :) –

回答

0

您可以使用libname工具,这是proc export通常在后台使用的工具。

libname myexcel xlsx "c:\outwhatever\myfile.xlsx"; *can use XLSX if 9.4+ or EXCEL if earlier; 

这就给了你一个普通LIBNAME就好像它是一个SAS LIBNAME,你可以写它,像这样:

data myexcel.sheetname; 
    set whatever; 
run; 

或者使用PROC COPY或相似。

还有其他选择(例如使用OLEDB或类似的),但libname是最简单的。有关更多详细信息,请参见the documentation

0

如果您有SAS 9.4 ODS Excel非常简单且很好,请将sheet_interval选项设置为group,并为表名添加前缀。

proc sort data=sashelp.class out=class; 
by age; 
run; 

ods excel file='/folders/myfolders/sample.xlsx' options (sheet_interval='bygroup' sheet_label='Age'); 

proc print data=class noobs label; 
by age; 
run; 

ods excel close; 
相关问题