将excel文件导入长度超过32个字符的SAS:命名范围
我有一个(2010)excel文件,其中包含我要导入SAS的工作表的长名称。作为一个虚拟示例,假设此工作表被称为足够长的某个工作表名称(长度为30个字符,因此在2010 excel中可以作为工作表名称)。现在假设我只想在这张表中导入范围C6:G200。现在,我应该能够通过使用proc import中的range=选项来实现这一点,如下所示将excel文件导入长度超过32个字符的SAS:命名范围,excel,import,sas,proc,Excel,Import,Sas,Proc,我有一个(2010)excel文件,其中包含我要导入SAS的工作表的长名称。作为一个虚拟示例,假设此工作表被称为足够长的某个工作表名称(长度为30个字符,因此在2010 excel中可以作为工作表名称)。现在假设我只想在这张表中导入范围C6:G200。现在,我应该能够通过使用proc import中的range=选项来实现这一点,如下所示 proc import out=chk_xl_import datafile="somefilename.xlsx" replace
proc import
out=chk_xl_import
datafile="somefilename.xlsx"
replace
;
range="somesheetnamethatislongenough$C6:G200";
getnames=no;
run;
然而,我得到一个错误,说:
ERROR 65-58:Name“somesheetname足够长$C6:G200”对于此上下文中的SAS名称太长。
(将sheet=;选项与range=;选项结合使用会产生相同的错误)。我想我可以通过在libname语句中使用excel引擎来解决这个问题,但是我遇到了同样的问题。因此,该代码也不起作用:
libname
myxl_lib
excel
"somefilename.xlsx"
header=NO
;
data chk_xl_lib;
set myxl_lib."somesheetnamethatislongenough$C6:G200"n;
run;
libname myxl_lib clear;
我基本上得到了相同的错误:
错误307-185:数据集名称不能超过32个字符。
除了导入整个工作表(即从范围中删除“C6:G200”以使其少于32个字符),然后在SAS中对子设置生成的数据集之外,可以做的任何事情?最简单的方法是在Excel中设置命名范围,然后在SAS中的导入语句中参考该范围。如果使用数据步骤方法,则不需要将范围名称作为名称文字,例如
data chk_xl_lib;
set myxl_lib.named_range;
run;
如果不想修改excel文件以使其正常工作,可以使用
这可能需要安装PC文件的
SAS/Access接口
,才能正常工作。另外,PROC IMPORT只是在后端使用LIBNAME引擎,因此它本身对您没有帮助。
proc sql;
connect to excel (path="somefilename.xlsx");
create table chk_xl_import as
select * from connection to excel
(
select * from `somesheetnamethatislongenough$C6:G200`
);
disconnect from excel;
quit;