Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将excel文件导入长度超过32个字符的SAS:命名范围_Excel_Import_Sas_Proc - Fatal编程技术网

将excel文件导入长度超过32个字符的SAS:命名范围

将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

我有一个(2010)excel文件,其中包含我要导入SAS的工作表的长名称。作为一个虚拟示例,假设此工作表被称为足够长的某个工作表名称(长度为30个字符,因此在2010 excel中可以作为工作表名称)。现在假设我只想在这张表中导入范围C6:G200。现在,我应该能够通过使用proc import中的range=选项来实现这一点,如下所示

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;