数据报告中的背景图像、超链接与目录节点控制技巧
1. 使用背景图像属性
HTML 是使用
BACKGROUNDIMAGE=
属性的有效输出目标之一。以下示例展示了如何将合适的图像作为背景图像插入到特定列中。
示例代码如下:
proc report data=orders;
column order_type;
define order_type / group format=typef.
style(column)=[just=c cellwidth=1in cellheight=1in];
compute order_type;
if order_type = 1 then call define(_col_,'style',
'style=[backgroundimage="goldmedal.tiff"]');
else if order_type = 2 then call define(_col_,'style',
'style=[backgroundimage="silvermedal.tiff"]');
else if order_type = 3 then call define(_col_,'style',
'style=[backgroundimage="bronzemedal.tiff"]');
endcomp;
run;
操作步骤说明:
1.
设置列样式
:通过
style(column)=[just=c cellwidth=1in cellheight=1in]
设置列的样式,确保图像大小合适。
2.
应用背景图像
:在
compute
块中,根据
order_type
的不同值,使用
CALL DEFINE
语句为每一行设置不同的背景图像。
2. 创建超链接
报告中常常需要使用超链接,超链接可以指向单个网站,也可以指向与报告相关的文件。以下介绍几种创建超链接的方法。
2.1 创建自定义样式模板
在输出为 PDF 时,默认情况下超链接会被蓝色框包围。可以创建自定义样式模板来移除这些蓝色框。
示例代码:
ods path(prepend) work.templat(update);
proc template;
define style styles.pearl2;
parent=styles.pearl;
style body from document /
linkcolor=_undef_;
end;
run;
ods pdf file='url.pdf' notoc style=pearl2;
操作步骤:
1.
设置路径
:使用
ods path(prepend) work.templat(update);
设置临时样式模板的路径。
2.
定义样式
:在
proc template
中定义新样式
styles.pearl2
,并将
LINKCOLOR
属性设置为未定义,以移除蓝色框。
3.
应用样式
:在
ods pdf
语句中指定使用新样式。
2.2 超链接到静态位置
可以将
URL=
属性设置为硬编码的值,为表头或单元格添加超链接。
示例代码:
proc report data=orders;
column customer_type n;
define customer_type / group
style(header)=[url="http://www.sas.com" flyover="SAS"];
run;
操作步骤:在
define
语句的
style(header)
中设置
URL
和
flyover
属性,为表头单元格添加超链接。
也可以在
CALL DEFINE
语句中使用
URL=
属性:
proc report data=orders;
column customer_type n;
define customer_type / group;
compute n;
call define(_col_,'style','style=[url=http://www.sas.com flyover="SAS"]');
endcomp;
run;
操作步骤:在
compute
块中使用
CALL DEFINE
语句,将
URL
和
flyover
属性应用到单元格。
2.3 链接到多个文件
可以在
CALL DEFINE
语句中使用
URL
作为第二个参数,将整个单元格设置为链接。
示例代码:
proc report data=orders;
column customer_type n;
define customer_type / group;
compute customer_type;
length link $100;
link = cats(customer_type,".pdf");
call define(_col_,'url',link);
endcomp;
run;
操作步骤:
1.
创建链接变量
:在
compute
块中创建
link
变量,根据
customer_type
的值生成不同的链接。
2.
应用链接
:使用
CALL DEFINE
语句将链接应用到单元格。
为了在 PDF 中更清晰地显示链接,可以使用
TEXTDECORATION=
属性为链接文本添加下划线。
示例代码:
compute customer_type;
length link $100;
link = cats(customer_type,".pdf");
call define(_col_,'url',link);
call define(_col_,'style','style=[textdecoration=underline]');
endcomp;
操作步骤:在
compute
块中添加额外的
CALL DEFINE
语句,设置
textdecoration
属性为
underline
。
3. 控制目录节点
掌握
PROC REPORT
的最后一步是学习如何控制目录节点和标签。以下介绍几种控制目录节点的方法。
3.1 默认节点
PROC REPORT
创建的默认目录有三个节点级别:
|节点级别|控制方式|说明|
| ---- | ---- | ---- |
|程序标签|由
ODS PROCLABEL
语句控制|标签可赋值为任意字符串,可设为空,但除非使用
PROC DOCUMENT
,否则不能完全消除该节点|
|报告标签|由
PROC REPORT
语句中的
CONTENTS=
选项控制|文本值是静态的,可通过赋值为空字符串完全消除该节点|
|表格标签|由
BREAK
语句中的
CONTENTS=
选项控制|
BREAK
语句必须指定
PAGE
选项才能更改节点标签,需要有分页变量,文本值是静态的,可通过赋值为空字符串完全消除该节点|
示例代码:
proc report data=orders;
column product_line quantity total_retail_price;
define product_line / group;
run;
操作步骤:运行上述代码生成默认目录节点。
更改默认标签示例:
data orders;
set orders;
dummy = 1;
run;
ods proclabel = 'Sales Data';
proc report data=orders contents='Product Line';
column dummy product_line quantity total_retail_price;
define dummy / group noprint;
define product_line / group;
break before dummy / contents='Full Report' page;
run;
操作步骤:
1.
添加虚拟变量
:在数据集中添加
dummy
变量。
2.
设置程序标签
:使用
ods proclabel
设置程序标签。
3.
设置报告标签
:在
proc report
语句中设置
CONTENTS
属性。
4.
设置表格标签
:在
break
语句中设置
CONTENTS
和
PAGE
属性。
3.2 BY 变量节点
使用
BY
变量会为目录添加一个节点级别。
示例代码:
proc sort data=orders;
by customer_age_group;
run;
proc report data=orders;
by customer_age_group;
column product_line quantity total_retail_price;
define product_line / group;
run;
操作步骤:
1.
排序数据
:使用
proc sort
按
customer_age_group
对数据进行排序。
2.
运行报告
:在
proc report
中使用
by
语句,生成包含
BY
变量节点的目录。
为了更改每个
BY
组的节点标签,可以将
PROC REPORT
步骤放在宏程序中。
示例代码:
proc sort data=orders;
by customer_age_group;
run;
%macro bynode(byvar);
ods proclabel = "&byvar";
proc report data=orders contents="";
where customer_age_group="&byvar";
column product_line quantity total_retail_price;
define product_line / group;
run;
%mend bynode;
data _null_;
set orders;
by customer_age_group;
if first.customer_age_group then
call execute('%bynode('||customer_age_group||')');
run;
操作步骤:
1.
排序数据
:使用
proc sort
对数据进行排序。
2.
定义宏
:定义
bynode
宏,在宏中设置程序标签和报告标签,并根据
byvar
的值筛选数据。
3.
执行宏
:在
data _null_
步中,使用
call execute
为每个
BY
组执行一次宏。
还可以使用
BREAK BEFORE
语句移除表格标签节点:
proc sort data=orders;
by customer_age_group;
run;
%macro bynode(byvar);
ods proclabel = "&byvar";
proc report data=orders contents="";
where customer_age_group="&byvar";
column customer_age_group product_line quantity total_retail_price;
define customer_age_group / group noprint;
define product_line / group;
break before customer_age_group / contents="" page;
run;
%mend bynode;
data _null_;
set orders;
by customer_age_group;
if first.customer_age_group then
call execute('%bynode('||customer_age_group||')');
run;
操作步骤:
1.
排序数据
:使用
proc sort
对数据进行排序。
2.
定义宏
:定义
bynode
宏,在宏中设置程序标签和报告标签,添加
customer_age_group
列并设置为
noprint
,使用
break
语句消除表格标签节点。
3.
执行宏
:在
data _null_
步中,为每个
BY
组执行一次宏。
3.3 DEFINE 语句的 CONTENTS= 选项
DEFINE
语句的
CONTENTS=
选项只有在同时指定
PAGE
选项时才有效。可以使用该选项更改第三个节点(表格标签)。
示例代码:
proc report data=orders;
column product_line quantity total_retail_price;
define product_line / group contents='Product Line' page;
run;
操作步骤:在
define
语句中设置
CONTENTS
和
PAGE
属性,更改表格标签。
当表格很宽时,
DEFINE
语句的
PAGE
选项会创建水平分页,同时在目录中生成多个表格条目。
示例代码:
proc report data=orders;
column customer_id customer_name customer_age customer_gender
customer_birthdate customer_country customer_group
customer_type product_name quantity total_retail_price;
define customer_id / group;
define customer_name / group;
define customer_age / group;
define customer_gender / group;
define customer_birthdate / group;
define customer_country / group format=$cntry.;
define customer_group / group;
define customer_type / group;
define product_name / group page;
run;
操作步骤:在
define
语句中为
product_name
列设置
PAGE
选项,生成多个表格条目。
可以使用两个
DEFINE
语句的
CONTENTS=
选项来控制这些表格标签:
proc report data=orders;
column customer_id customer_name customer_age customer_gender
customer_birthdate customer_country customer_group
customer_type product_name quantity total_retail_price;
define customer_id / group contents='Customer Info, Entry 1';
define customer_name / group;
define customer_age / group;
define customer_gender / group;
define customer_birthdate / group;
define customer_country / group format=$cntry.;
define customer_group / group;
define customer_type / group;
define product_name / page contents='Customer Info, Entry 2';
run;
操作步骤:在两个
define
语句中分别设置
CONTENTS
属性,控制不同表格的标签。
3.4 BREAK 语句的 CONTENTS= 选项
BREAK
语句通常用于使用
PAGE
选项创建新表格,每个新表格在目录中都会有一个条目。可以使用
CONTENTS=
选项更改表格标签。
示例代码:
proc report data=orders;
column customer_country product_line quantity total_retail_price;
define customer_country / group;
define product_line / group;
break after customer_country / page;
run;
操作步骤:在
break
语句中设置
PAGE
选项,创建新表格并在目录中生成条目。
使用
CONTENTS=
选项更改表格标签:
proc report data=orders;
column customer_country product_line quantity total_retail_price;
define customer_country / group;
define product_line / group;
break after customer_country / page contents='Customer Country';
run;
操作步骤:在
break
语句中设置
PAGE
和
CONTENTS
属性,更改表格标签。
最佳实践是在
BREAK BEFORE
语句中控制表格标签:
proc report data=orders;
column customer_country product_line quantity total_retail_price;
define customer_country / group;
define product_line / group;
break before customer_country / page contents='Customer Country';
run;
操作步骤:在
break
语句中设置
BEFORE
位置、
PAGE
和
CONTENTS
属性,更改表格标签。
综上所述,通过合理运用背景图像、超链接和目录节点控制技巧,可以使数据报告更加美观、实用,提高报告的可读性和交互性。
数据报告中的背景图像、超链接与目录节点控制技巧(续)
4. 技巧总结与应用建议
在数据报告的制作过程中,我们介绍了使用背景图像、创建超链接以及控制目录节点的多种方法。下面对这些技巧进行总结,并给出一些应用建议。
4.1 背景图像应用总结
-
使用场景
:当需要为报告中的特定列添加视觉效果,以区分不同类型的数据时,可使用
BACKGROUNDIMAGE=属性。例如,在订单报告中,根据订单类型显示不同的奖牌图像。 -
注意事项
:确保图像大小与单元格大小匹配,可通过设置
CELLWIDTH=和CELLHEIGHT=属性来实现。同时,要注意图像的格式和路径,确保能够正确显示。
4.2 超链接应用总结
-
静态链接
:对于指向固定网站的链接,可在
style(header)或CALL DEFINE语句中直接设置URL=属性。这种方式简单直接,适用于需要在表头或单元格中添加固定链接的情况。 -
动态链接
:当需要为每个单元格设置不同的链接时,可在
CALL DEFINE语句中使用变量作为链接地址。同时,为了在 PDF 中更清晰地显示链接,可使用TEXTDECORATION=属性添加下划线。 - 样式模板 :在输出为 PDF 时,可创建自定义样式模板来移除超链接周围的蓝色框,提高报告的美观度。
4.3 目录节点控制总结
- 默认节点 :了解默认目录节点的三个级别及其控制方式,可根据需要更改程序标签、报告标签和表格标签。通过合理设置这些标签,可使目录更加清晰明了。
-
BY 变量节点
:使用
BY变量会增加目录节点级别。若要更改每个BY组的节点标签,可将PROC REPORT步骤放在宏程序中。同时,可使用BREAK BEFORE语句移除表格标签节点。 -
DEFINE 语句
:
DEFINE语句的CONTENTS=选项在指定PAGE选项时可用于更改表格标签。当表格很宽时,PAGE选项会创建多个表格条目,可使用两个DEFINE语句的CONTENTS=选项控制这些标签。 -
BREAK 语句
:
BREAK语句的PAGE选项可创建新表格,CONTENTS=选项可更改表格标签。最佳实践是在BREAK BEFORE语句中控制表格标签。
5. 流程图展示
下面是一个简单的流程图,展示了创建带有超链接和自定义目录的报告的主要步骤:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([开始]):::startend --> B(准备数据):::process
B --> C{是否需要背景图像}:::decision
C -- 是 --> D(设置背景图像):::process
C -- 否 --> E{是否需要超链接}:::decision
D --> E
E -- 是 --> F(创建超链接):::process
E -- 否 --> G{是否需要控制目录节点}:::decision
F --> G
G -- 是 --> H(控制目录节点):::process
G -- 否 --> I(生成报告):::process
H --> I
I --> J([结束]):::startend
6. 实际案例分析
假设我们要制作一份销售报告,包含不同客户类型的订单信息。报告需要满足以下要求:
- 根据订单类型显示不同的背景图像。
- 为客户类型列添加指向 SAS 官网的超链接。
- 自定义报告的目录节点,使其更加清晰。
以下是实现该报告的代码:
/* 设置背景图像 */
proc report data=orders;
column order_type customer_type n;
define order_type / group format=typef.
style(column)=[just=c cellwidth=1in cellheight=1in];
compute order_type;
if order_type = 1 then call define(_col_,'style',
'style=[backgroundimage="goldmedal.tiff"]');
else if order_type = 2 then call define(_col_,'style',
'style=[backgroundimage="silvermedal.tiff"]');
else if order_type = 3 then call define(_col_,'style',
'style=[backgroundimage="bronzemedal.tiff"]');
endcomp;
/* 添加超链接 */
define customer_type / group
style(header)=[url="http://www.sas.com" flyover="SAS"];
/* 控制目录节点 */
ods proclabel = '销售报告';
proc report data=orders contents='客户订单信息';
column customer_type order_type n;
define customer_type / group;
define order_type / group;
break before customer_type / contents='客户类型报告' page;
run;
操作步骤:
1.
设置背景图像
:在
compute
块中根据
order_type
的值设置不同的背景图像。
2.
添加超链接
:在
define
语句的
style(header)
中为
customer_type
列添加指向 SAS 官网的超链接。
3.
控制目录节点
:使用
ods proclabel
设置程序标签,在
proc report
语句中设置报告标签,在
break
语句中设置表格标签。
通过以上步骤,我们可以制作出一份满足要求的销售报告,提高报告的可读性和交互性。
7. 总结
通过本文的介绍,我们学习了在数据报告中使用背景图像、创建超链接以及控制目录节点的方法。这些技巧可以使报告更加美观、实用,提高报告的可读性和交互性。在实际应用中,可根据具体需求选择合适的方法,并注意相关的注意事项。希望这些技巧能够帮助你制作出更加出色的数据报告。
超级会员免费看
5187

被折叠的 条评论
为什么被折叠?



