SAS使用ODS tagsets.excelxp与gridded布局导出3行2列XML布局异常求助
问题原因
- 仅声明了2个
ods region:ODS网格布局默认每个ods region对应网格中的一个单元格,原代码将3个表格的输出全部放在第一个region、剩下3个放在第二个region,会导致两列各自堆叠3张表,无法实现按行拆分的3行2列布局。 - 注释了自动跳转参数:原代码将
ods layout gridded的advance=table参数注释,该参数开启时会在每输出一个表格后自动跳转到下一个网格单元格,注释后同region内的所有输出会连续堆叠,不会触发布局跳转。
修正方案
保留advance=table参数即可实现自动按网格填充,无需手动声明ods region,按行优先的顺序输出6个表格,网格布局会自动按照3行2列的规则填充:
ods tagsets.excelxp file="mypath\Stest.xml" style=printer options( frozen_rowheaders='no' sheet_interval='none' sheet_name='sheet1' embedded_titles='yes' embedded_footnotes='yes'); /* 开启advance=table,每个表格输出后自动跳转到下一个网格单元格 */ ods layout gridded columns=2 rows=3 advance=table; /* 按行优先顺序输出6个表格,自动匹配3行2列的每个单元格 */ proc print data=table1; title "table1"; run; proc print data=table2; title "table2"; run; proc print data=table3; title "table3"; run; proc print data=table4; title "table4"; run; proc print data=table5; title "table5"; run; proc print data=table6; title "table6"; run; ods layout end; ods tagsets.excelxp close;
如果需要手动精准控制每个表格的位置,也可以为每个表格单独指定region的行列坐标,写法示例:
ods layout gridded columns=2 rows=3; ods region row=1 column=1; proc print data=table1;run; ods region row=1 column=2; proc print data=table2;run; /* 其余表格依次指定对应row和column参数即可 */
内容的提问来源于stack exchange,提问作者Cox Tox
相关产品推荐
相关产品推荐

