BG-SAS

SAS 程序冷知识——ods生成excel

2021-02-05  本文已影响0人  生物统计与SAS研究员

一、程序代码

以下是用ods 生成excel的例子,先上代码。

ods excel file="path\cc.xlsx" style=pearl options(sheet_name="sheet名字" sheet_interval='none' embedded_footnotes='yes' embedded_titles="yes" contents="yes");

proc report data=dsn;

column name n;

define name / group;

compute name;

length link $100;

link =cats(name,".rtf");

call define(_col_,'url',link);

endcomp;

run;

ods excel close;

ods生成excel有两个方法,一个是ods excel 还有一个是 ods tagsets.excelxp。后者其实生成的不是真excel,是xml格式,后缀也不能写xlsx,只能是是xls。另外,call define(_col_,'url',link);中的‘url’是可以加超链接的,link不是sas程序或选项,是自定义的变量。

二、option选项

options(。。。。)中有如下选择:

1、sheet_name="sheet名字" ,就是添加excel的sheet的名字。

2、sheet_interval='none',这个选项是决定什么时候更换excel的sheet的,毕竟我们不希望所有的表都写在一个sheet里。这个选项有如下的值可以选:

NONE:他的意思是所有的数据都放在一个sheet里。只要不换sheet名,就不换sheet。

BYGROUP:过程步中一般可以用by选项分组,这个选项可以让每个by选项的分组,作为一个独立的sheet,sheet名字就是by里面变量的值。

PAGE:每一页作为一个独立sheet,sheet名没试过,估计是自定义的。

PROC:每个过程步的结果一个sheet,一般来说过程步除了report一类报告型的,都有名字,没试过,应该是默认名作为sheet名字

NOW:立刻生成一个新的sheet,其实如果是NONE的话声明新的sheet名字也可以换sheet,但这个选项不知道有什么实际作用。

TABLE:每个表格一个sheet,名字应该是用默认的。

以上我觉得真正有意义的可能就是 NONE BYGROUP ,因为“NONE”加“sheet名重定义”就已经可以随意增加sheet了。

3、embedded_footnotes='yes' :加入脚注

4、embedded_titles="yes":加入标题

5、absolute_column_width='16px' :设置绝对列宽。单位可选。

6、absolute_row_height='20':设置绝对列高。单位可选。

7、autofilter='all':设置筛选下拉菜单。就是excel里一般第一行的那个下拉小箭头。一般用来筛选排序用的。除了all还有如下选择:

ALL:全都加筛选。它只有表格从A1单元格开始的时候才有效(start_at=可以修改起始位置)。

NONE:全都不加筛选(默认值)

range:输入范围。例如‘3-5’,或者‘A:D’这样。值得注意的是这里的范围是相对范围,而不是绝对范围。它不是参照整个excel表来定的位置,而是参照具体表格的位置。比如A和D并不是指的excel里的A列和D列,它指的是excel表里的第1列和第4列。一旦用start_at修改其实位置就会发现,如果起始位置在excel的B列,range设置为B:C,那么实际上结果将在excel里的C列和D列生成筛选。用数字表示范围也是类似的。另外,筛选并不是只能在第一行产生,它是在表头所在的那一行生成的。

column:输入具体变量的位置,但只能输入一个。例如:'2'。与range里的情形类似,该数字是相对表格的位置,不是excel里sheet的位置。

8、sheet_label='XXX':设置sheet名的前缀,它指定的值将作为所有的sheet名称的前缀。但是sheet_name选项会使得这个选项无效

9、start_at="B2":设置表格起始位置,默认是第一行的第一个单元格。这个选项能决定表格在sheet中的位置。

10、title_footnote_width="10":这个选项可以把标题脚注放到合并单元格里。设置数字10,就可以把横向10个单元格(包含标题或脚注)合并成一个。

11、title_footnote_nobreak="yes":可以直接将标题,脚注,by行等那种跨行的合并单元格,使得合并的单元格数目正好等于表格变量的数目。这个选项会覆盖title_footnote_width的影响。

12、absolute_column_width='100px' :设置整个sheet的变量宽度。

13、absolute_row_height='20':设置整个sheet的变量高度。

14、embed_titles_once="yes":标题只出现一次。我们可以设置一个sheet里纵向罗列很多表,这个选项可以让这些表的标题只出现一次。

15、embed_footnotes_once="yes":同上

16、frozen_headers='on':冻结首行。默认为列标题所在行。如果输入数字则冻结对应行以上的部分,注意这个数字是绝对位置,不论表格位置在哪里,都会冻结设定的位置。

17、frozen_rowheaders='3':冻结列。默认冻结表格最后一列的左边所有列。也可以输入数字,该数字也是绝对位置。

18、hidden_columns='1, 2, 5, 6, 8-10':隐藏列。还可以用字母表示列,但数字字母不能混用。这里列位置的引用时绝对的,是按excel的sheet的位置,而不是按表位置为参照的。

19、hidden_rows='1,2,5,6,8-10':隐藏行,同上。

20、orientation='landscape':sheet横向或纵向。

上一篇下一篇

猜你喜欢

热点阅读