【发布时间】:2014-12-15 12:24:12
【问题描述】:
我有一个 (2010) excel 文件,其中包含我要导入 SAS 的工作表的长名称。作为一个虚拟示例,假设此工作表名为 somesheetnamethatislongenough(这是 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 'somesheetnamethatislongenough$C6:G200' is too long for a SAS name in this context.
(使用 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;
我基本上得到了同样的错误:
ERROR 307-185: The data set name cannot have more than 32 characters.
除了导入整个工作表(即从范围中删除“C6:G200”使其少于 32 个字符)然后在 SAS 中对结果数据集进行子设置之外,还有什么可以做的吗?
【问题讨论】:
-
顺便说一句,PROC IMPORT 只是在后端使用 LIBNAME 引擎,因此它本身对您没有帮助。