我司系统导入文件需求是xls格式的。我这边正常编程后,发现正常proc export程序导出的xls程序是乱码的,于是查文档找到了解决方案。
原始宏:
%macro export(expds=,sheet=);
PROC EXPORT DATA=&expds.
OUTFILE=&out.
DBMS=excel REPLACE label;
sheet="&sheet.";
RUN;
%mend;
- 问题:通常情况下,我们在使用export 或者 import procedure与xlsx交互,会优先考虑DBMS=EXCEL这个引擎,所以,与xls交互时,我们会默认继续使用EXCEL或者改为使用XLS。但这就是乱码的原因。
- 解决(方法一):SASHELP中其实对这块描述的很清楚。XLS引擎是是不支持转码的,使用DBMS=EXCELCS替代(附截图)
%macro export(expds=,sheet=);
PROC EXPORT DATA=&expds.
OUTFILE=&out.
DBMS=EXCELCS REPLACE label;
sheet="&sheet.";
RUN;
%mend;
- 解决(方法二):使用ODS导出,也不会出现乱码问题.
ods excel file="E:\xxxx.xls"
options(sheet_name="1");
proc report data=dataset;
column var1 var2 var3.....;
run;
ods excel close;