在xlsx

时间:2015-07-09 15:14:17

标签: excel sas

在包含公式的多表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

0 个答案:

没有答案