如何在标题和格式化列中编写带有格式化日期的Excel文件?

时间:2017-01-24 14:19:55

标签: sas

我想将数据集导出到SAS的Excel文件中,如下所示:

Claim_id  State    Suffix   Policy   Amount
125       CA         231    cyt     $58,000.00
458       dd         789    ghu     $78,961.00
458       lk         586    lk         -$56.00
785       ga         712    js         -$89.00

它需要有这样的标题: “截至[当前月份名称] [当前年份]。”,例如“截至2017年1月”。

如果金额为负数,则需要显示红色。

2 个答案:

答案 0 :(得分:2)

今天的标题以月份名称 - 年份格式:

%let today_month = %sysfunc(today(), monname8.);
%let today_year = %sysfunc(today(), year4.);

%put &today_month. &today_year.;

title "As of &today_month. &today_year.";

将Excel中的列设置为自定义格式:

/* This line goes into your PROC PRINT or PROC REPORT */
var amount / style(column)={tagattr="format: $#,##0.00_);[Red]($#,##0.00)"};

要调整格式,请在Excel中右键单击单元格,转到格式化单元格 - >自定义,创建格式,然后将字符串粘贴到"format: "部分。

ODS Excel的示例:

data test;
    input Claim_id  Amount;
datalines;
125 58000
458 78961
458 -56
785 -89
;
run;

%let today_month = %sysfunc(today(), monname8.);
%let today_year = %sysfunc(today(), year4.);

%put &today_month. &today_year.;

ods excel file='output path and file name here.xlsx' 
    options(embedded_titles="yes");

proc print data=test noobs;
    title "As of &today_month. &today_year.";
    var claim_id;
    var amount 
         / style(column)={tagattr="format: $#,##0.00_);[Red]($#,##0.00)"};
    run;

ods excel close;

结果:

Excel output example

请注意ODS EXCEL在9.4M2中是实验性的,并在9.4M3中生产。要使用旧的ods tagsets.excelxp(XML,但显示为Excel文件),只需将其替换为ods excel

ods tagsets.excelxp file='output path and file name here.xlsx' 
        options(embedded_titles="yes");;

... code here ...

ods tagsets.excelxp close;

来源:

http://blogs.sas.com/content/sasdummy/2014/09/21/ods-excel-and-proc-export-xlsx/ https://support.sas.com/resources/papers/proceedings16/SAS5642-2016.pdf http://support.sas.com/resources/papers/proceedings13/366-2013.pdf

答案 1 :(得分:0)

听起来你应该使用ODS EXCEL,我认为它与SAS 9.4 TS1M2一起提供。那会让你完全按照你的要求去做。

如果您没有该版本,可以对tagsets.excelxp执行相同操作,但这不会创建普通的excel文件类型文件;它将是一个xml文件,可能需要进一步处理。