SAS程序实现日常报表的全自动化
来源:互联网 发布:淘宝首页大图代码 编辑:程序博客网 时间:2024/05/17 20:29
http://bbs.pinggu.org/thread-1444265-1-1.html
------------------------------------------------------------------------------------
/* 该sas文件旨在说明如何编写一次完成以后不用任何人手更改(包括更改日期、excel的格式等)的常规报表;
如用邮件自动发送程序,则还可省略发送邮件的过程,做到一次编写,无需跟进(前提是程序经过检验完善);
可根据个人情况举一反三使用;
本文来自"OUR SAS"群-"统计-小风"
*/
options noxwait noxsync;
x '"D:\报表模板.xlsx"'; /* 该文件为固定的报表模板,可以事先调整好单元格格式、字体颜色,事先写好其他不变的内容 */
data _null_;
rc=sleep(10); /* sas睡眠10秒,是为了给打开上述文件留时间 */
run;
data _null_; /* 此处设定各类时间,比如你要读取的文件是包含时间的,如test2012-05-16,就是用当天的时间、
sas程序运行的时间去得到这个"2012-05-16";另外一种是你要生成的excel文件是包含时间的,也在这里处理得出 */
x=put(date()-1,yymmdd10.); /* 比如每日运行这个程序,处理前一日的文件,就是用date()-1 */
y=substr(x,6,2)||substr(x,9,2)||"b";
z=compress(input(substr(x,6,2),best8.)||"."||input(substr(x,9,2),best8.));
call symput("path",y);
call symput("path2",z);
run;
%let log=alla_&path; /* 我要处理的文件名就是 alla_0516b 这种形式 */
libname result "D:\test";
data temp1(compress=yes);
set result.&log; /* 类似这样应用 */
run;
/* 中间是你数据处理的过程,省略 */
filename r1 dde 'excel|[报表模板.xlsx]自定义表名1!r5c1:r60c6' ; /* 对某张表某些单元格进行写入 */
data _null_;
set result1;
file r1 notab linesize=2000; /* DDE默认空格为分隔符,如果一个变量中间有空格将会分开到两个单元格,用notab即可避免,
linesize赋予一个足够大的值,则过长的变量不会错行 */
put date '09'x time '09'x source '09'x duration '09'x sql '09'x type;
run;
filename r1 dde 'excel|[报表模板.xlsx]自定义表名2!r5c1:r60c6' ; /* 继续写入下一张表 */
data _null_;
set result2;
file r1 notab linesize=2000;
put date '09'x time '09'x source '09'x duration'09'x sql '09'x type;
run;
filename r1 dde "excel|system";
data _null_;
file r1;
put '[workbook.activate("自定义表名2")]'; /* 激活其中一张表 */
put '[row.height(0,"A1:A1",false,3)]'; /* 调整行高;类似这样的跟vba比较像 */
put '[workbook.activate("自定义表名1")]';
put '[row.height(0,"A1:A1",false,3)]';
x= compress('[save.as("D:\sql('||&path2||').xlsx")]'); /* 存储一个备份到某个路径,文件名为 sql(5.16).xlsx */
put x;
y= compress('[save.as("E:\MailFile\sql('||&path2||').xlsx")]'); /* 存储到邮件文件夹,这样由邮件自动发送excel出去 */
put y;
put '[quit]';
run;
/*整个程序如上,然后txt写如下内容另存为bat文件,在windows-附件-系统工具-任务计划程序里面设置每日凌晨运行这个bat即可:
D:
cd: "D:\sas_program\sas\sasfoundation\9.2\"
sas.exe -sysin "D:\thisprogramname.sas" -altlog "D:\test\log.log"
*/
/* 上述bat第二行是你sas程序的路径,第三行表示执行的sas程序的路径和名字,然后将sas运行的日志写入到log.log中,
以便事后查看日志 */
- SAS程序实现日常报表的全自动化
- 临床试验的统计报表问题:四格表指标统计分析报表的sas宏程序
- 生产报表的自动化实现方案
- 很全的sas基础知识
- 很全的sas基础知识
- 程序签名的自动化实现
- 素数的sas实现
- 一些sas程序的总结
- MFC下 报表打印程序的实现
- cobbler实现全自动化安装
- BIRT 报表的自动化测试
- 初级程序的日常
- SAS程序
- 使用 iMacros 来自动化日常的工作
- SAS进阶《深入解析SAS》之开发多语言支持的SAS程序
- SAS ReportStudio打不开含有中文名字的报表问题
- 利用SAS软件制作报表的常用手法
- 使用python来实现报表自动化~
- crmsql语句查询实体窗体实体字段关系信息
- JSP项目在MAC下的搭建——以本人 LPSS 项目为例
- Linked List Cycle II
- 面试算法(四十四)扑克牌的顺子
- [zoj 3774]Power of Fibonacci 数论(二次剩余 拓展欧几里得 等比数列求和)
- SAS程序实现日常报表的全自动化
- Java-JDK配置
- AJAXget方式传中文参数
- Android访问网络,使用HttpURLConnection还是HttpClient?
- struts2 s:if 多条件判断#的使用
- poj 3020 Antenna Placement(二分无向图 匈牙利)
- gcc 中typeof的用法
- HDUJ 2040 亲和数
- 浅谈CSRF攻击方式