我正在尝试从SAS EG导出excel文件。我使用下面的代码,它工作正常。
proc export dbms=excelcs
data= MONTH
file="A:\D1\D2\FILE.xlsb" replace;
port=9621;
server="pwn59000.corp.ds.fedex.com";
sheet='month';
run;
proc export dbms=excelcs
data= DAY
file="A:\D1\D2\FILE.xlsb" replace;
port=9621;
server="pwn59000.corp.ds.fedex.com";
sheet='day';
run;
proc export dbms=excelcs
data= YEAR
file="A:\D1\D2\FILE.xlsb" replace;
port=9621;
server="pwn59000.corp.ds.fedex.com";
sheet='year';
run;
所以我得到一个文件名'FILE',包含3张,月,年和日。 导出文件后,我将另外3张工作表添加到excel文件中,每个工作表分别显示年,月和日,并将工作表命名为day1,month1和year1。之后,我将工作表年,月和日隐藏起来,以便用户只能看到工作表day1,month1和year1中的图表。此文件每天从SAS导出。当文件第二天导出时,应隐藏的工作表不再隐藏但可见。有没有办法使用PROC导出或任何其他过程隐藏工作表。请帮忙。
谢谢!
答案 0 :(得分:0)
您可以尝试将数据集导出为CSV文件,然后在每次打开Excel工作簿时使用excel中的数据连接将csv文件导入隐藏的工作表。
或者,尝试在SAS中使用libname statemet来引用excel文件:
libname xl pcfiles type=Excel unicode=yes port='YOURPORT' server='YOURSERVER' path = "YOURPATH\YOUREXCELFILE.xls" ;
然后通过
删除隐藏的工作表proc datasets lib=xl;
delete HIDDENSHEETNAME;
run;
使用
重新插入新数据data xl.HIDDENSHEETNAME;
set YOURDATA;
run;
当然,您需要为所有隐藏的工作表重复此操作。
答案 1 :(得分:0)
您可以使用DDE协议隐藏/取消隐藏(并执行许多其他有趣的事情)。 像这样:
首先我用3张
创建测试Excel文件libname xlibr excel 'C:\Users\Dmitry\Google Drive\SAS\test.xlsx';
data xlibr.sheet1;
set sashelp.class;
run;
data xlibr.sheet2;
set sashelp.class;
run;
data xlibr.sheet3;
set sashelp.class;
run;
libname xlibr clear;
现在我必须以编程方式打开Excel(如果它已经打开就可以了)
options noxwait noxsync;
filename sas2xls dde 'excel|system';
data _null_;
length fid rc start stop time 8;
fid=fopen('sas2xls','s');
put fid=;
if fid = 0 then do;
rc=system('start excel');
start=datetime();
stop=start+10;
do while(fid^=0);
fid=fopen('sas2xls','s');
put fid=;
time=datetime();
if time > stop then fid=0;
end;
end;
run;
现在我向Excel发送命令,实际模拟人类鼠标点击:
1)打开工作簿
2)隐藏Sheet1
3)关闭错误(保存并关闭文件,没有可能的弹出对话框)
4)保存
5)关闭文件
filename sas2xls dde 'excel|system';
data _null_;
file sas2xls;
put '[open("C:\Users\Dmitry\Google Drive\SAS\test.xlsx")]';
put '[workbook.hide("Sheet1")]';
put '[error(false)]';
put '[save()]';
put '[file.close(false)]';
run;