问题:如何在不运行PROC EXPORT
几次的情况下将数据集的子集导出到Excel工作簿的各个选项卡(最好是.xlsx)?
我的解决方案
数据集包含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 :(得分: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。
答案 1 :(得分:0)
如果你有SAS 9.4 ODS Excel非常简单和漂亮,请将sheet_interval选项设置为bygroup并为工作表名称添加前缀。
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;