在包含公式的多表xlsx文件中使用proc import时,我最近遇到了一些奇怪的问题。
proc import out = testfile
datafile= "C:\myfile.xlsx"
dbms = xlsx replace;
sheet = "aaa" ;
GETNAMES = yes;
mixed=yes;
run;
在工作表“aaa”上有公式 - 即链接到工作表“ccc”上的单元格。在导入SAS之后,一个变量(仅包含字符串)不包含它应包含的值,而是包含来自myfile.xlsx的第三个表(称为“bbb”)的名称。
进入SAS之前:
sheet ccc:
"bad_variable" (in column A)
correctname1
correctname1
correctname1
correctname2
...
sheet aaa (with formulas):
"bad_variable"
=ccc!A1
=ccc!A2
=ccc!A3
=ccc!A4
...
sheet bbb:
"any_variable"
whatever
whatever
whatever
whatever
...
进入SAS后的预期:
testfile:
"bad_variable"
correctname1
correctname1
correctname1
correctname2
...
进入SAS之后会发生什么?
testfile:
"bad_variable"
bbb
bbb
bbb
bbb
...
我认为这可能是一个错误。 第一个想法指向以下方向: 解压缩xlsx文件时会弹出一个名为“sharedStrings.xml”的文件。字符串“bbb”恰好是此列表中包含的第一个字符串。这可能是巧合,但也许不是......?
UPDATE 10.07.15:似乎这并非巧合:sharedStrings.xml包含整个文档中多个实例中使用的所有字符串。可能是xlsx文件小于xls文件的原因之一。无论如何:当使用proc导入链接到包含字符串的单元格时,似乎存在一个错误,该字符串也是sharedStrings-list的一部分,值将被该列表的第一个条目替换。已经转向技术支持,会让你知道答案。
当公式链接到具有数值的单元格时,似乎没有问题。仅当链接引用字符串值时,才会显示所描述的问题。
非常感谢任何帮助!
系统环境:
SAS 9.3 TS Level 1M2(“Base SAS”)
SAS在元数据服务器上运行
W7 64位企业
MS Office 2013