我想在变量中添加一个单引号-sas中的数字,以便excel中的输出显示为适当的数字,而不是科学计数法
proc SQL; 创建表PERM.accounts为 选择不同的 输入(LOAN_ACCOUNT_NO,$ 30。)作为'Account No'n,但这会导致在excel中这样的数字:1.23456E + 12-但我需要输出看起来像这样:1234567891234 欺骗Excel的方法是在数字前加上撇号,例如:'1234567891234 如何在proc sql中编写代码?
,input(LOAN_ACCOUNT_NO, best32.) as 'Account No'n
,input(LOAN_ACCOUNT_NO, $30.) as 'Account No'n
如何在proc sql函数中使用catx
语句附加LOAN_ACCOUNT_NO?
更多代码(摘自评论)
%SASSTARTUP;
%macro EXPORT_MAIL (
IN_DSNAME=PERM.FINAL_&END_CURR_MTH,
CSV_FNAME=DATA_&END_CURR_MTH
);
proc EXPORT
data=&IN_DSNAME
outfile="&OUTPUT_DATA_DIR.\&CSV_FNAME..csv"
dbms=CSV
replace label;
run;
filename myfile EMAIL
to=("&EMAIL_RECIP_1.")
from=(‘ @ ‘)
replyto=(‘ @ ‘)
subject=("Sample")
attach=(
"&OUTPUT_DATA_DIR.\&CSV_FNAME..csv"
content_type='application/excel'
)
;
data NULL;
file myfile;
put ' ';
put "The latest Sample is attached.";
put ' ';
run;
%mend EXPORT_MAIL;
答案 0 :(得分:1)
在创建要使用Excel打开的csv附件时,问题是"Long number in CSV file appearing in scientific notation by default"中的一个问题,它说在csv的默认打开操作期间,Excel将尊重csv中的文本公式。>
您还可以通过在帐户号后附加硬空格字符(xA0)来强制SAS Proc Export输出双引号字符值。
示例:
data have;
acct = '123456789012345';
accnum = input(acct,best32.);
acctsq = cats("'",acct);
acctweak = strip(acct)||byte(160);
acctdqformula = cats('=TEXT(',acct,',"0")');
run;
proc export data=have outfile="c:\temp\sandbox.csv" dbms=csv replace label;
run;
options noxwait noxsync xmin;
%sysexec start "Open Excel" excel c:\temp\sandbox.csv;
因此您创建PERM.FINAL_&END_CURR_MTH
的SQL语句可以具有
, strip(LOAN_ACCOUNT_NO)||byte(160) as 'Account No'n
, cats('=TEXT(',LOAN_ACCOUNT_NO,',"0")') as 'Account No'n
或
创建用于附件的Excel文件
ODS EXCEL file = "&OUTPUT_DATA_DIR.\&CSV_FNAME..xlsx";
proc PRINT data=&IN_DSNAME;
ODS EXCEL CLOSE;
… attach &CSV_FNAME..xlsx with content type application/ms-excel
答案 1 :(得分:0)
尝试使用ODS代替PROC EXPORT:
ODS tagsets.ExcelXP FILE = "DATA_&END_CURR_MTH..xml";
proc print data=PERM.FINAL_&END_CURR_MTH;
format .....;
run;
在打印语句中适当设置格式。