SAS:ODS Excel在没有数据时锁定文件
我注意到,每当我试图在ODS Excel中运行PROC REPORT时,如果没有数据,它就永远不会完成对文件的写入,而且会卡住。该文件保持锁定状态 这是为什么?如何解决?我事先不知道我的报告是否有任何数据 下面是示例代码:SAS:ODS Excel在没有数据时锁定文件,sas,Sas,我注意到,每当我试图在ODS Excel中运行PROC REPORT时,如果没有数据,它就永远不会完成对文件的写入,而且会卡住。该文件保持锁定状态 这是为什么?如何解决?我事先不知道我的报告是否有任何数据 下面是示例代码: data person; input name $ dept $; datalines; ; GOPTIONS RESET=ALL; ODS Excel FILE = "C:\Users\jloktie\Desktop\test1.xls
data person;
input name $ dept $;
datalines;
;
GOPTIONS RESET=ALL;
ODS Excel FILE = "C:\Users\jloktie\Desktop\test1.xlsx" STYLE = CSROD
options(embedded_titles='yes' sheet_interval='none' autofilter= 'all'
Absolute_Column_Width = '10') ;
proc report data = person nowd HEADLINE HEADSKIP
style (report) = {background = white font_face = "Verdana" font_size = 8pt just=LEFT }
style (column) = {background = white font_face = "Verdana" font_size = 8pt just=LEFT}
style (header) = {foreground = white font_face="Verdana" font_size = 10pt just=LEFT background = cx4d4d4d} ;
columns name;
define name / "Name";
run;
ODS _ALL_ CLOSE;
下面是日志上的内容:
29349 data person;
29350 input name $ dept $;
29351 datalines;
NOTE: SAS went to a new line when INPUT statement reached past the end of a line.
NOTE: The data set WORK.PERSON has 0 observations and 2 variables.
NOTE: DATA statement used (Total process time):
real time 0.03 seconds
cpu time 0.01 seconds
29353 ;
29354
29355
29356 GOPTIONS RESET=ALL;
29357 ODS Excel FILE = "C:\Users\jloktie\Desktop\test1.xlsx" STYLE = CSROD
29358
29359 options(embedded_titles='yes' sheet_interval='none' autofilter= 'all'
29360 Absolute_Column_Width = '10') ;
29361
29362 proc report data = person nowd HEADLINE HEADSKIP
29363
29364 style (report) = {background = white font_face = "Verdana" font_size = 8pt just=LEFT }
29365 style (column) = {background = white font_face = "Verdana" font_size = 8pt just=LEFT}
29366 style (header) = {foreground = white font_face="Verdana" font_size = 10pt just=LEFT background
29366! = cx4d4d4d} ;
29367
29368
29369 columns name;
29370
29371 define name / "Name";
29372
29373 run;
NOTE: No observations in data set WORK.PERSON.
NOTE: No observations in input data set.
NOTE: PROCEDURE REPORT used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
29374
29375 ODS _ALL_ CLOSE;
NOTE: Writing EXCEL file: C:\Users\jloktie\Desktop\test1.xlsx
我使用的是SAS 9.4 TS Level 1M4。如果您不提供任何输出,ODS EXCEL将不会生成有效的XLSX文件。因此,要么添加其他输出,要么在没有输出时跳过运行ODS语句 始终具有输出的一种方法是确保数据集始终具有至少一个观察值
data for_report ;
if _n_=1 and eof then output;
set person end=eof;
output;
end;
proc report data=for_report ....
在M6中,ODS EXCEL将创建一个空工作簿并打开它 如果不关闭空工作簿,则随后提交相同代码或任何试图重新创建工作簿的代码时,目标将被锁定 首先
非常感谢。我想只有在基础表中有观察结果的情况下,我才需要弄清楚如何使用ODS Excel。我很惊讶SAS没有覆盖它。
ODS Excel
FILE = "test1.xlsx"
options (
embedded_titles='yes'
sheet_interval='none'
autofilter= 'all'
Absolute_Column_Width = '10'
)
;
* no output;
proc report data=sashelp.class;
where name=:'z';
run;
* closing the destination creates an empty workbook;
ods excel close;