2

我正在尝试在 for 循环中访问多个文件,如下所示:

年龄 = xlsread(strcat('Pipeline_BO_2013_',names(2),'_CDBU.xlsx'), '数据', 'H:I')

它返回一个错误文件名必须是字符串。所以我做了以下测试:

文件名 = strcat('Pipeline_BO_2013_',names(2),'_CDBU.xlsx')

文件名 =

'Pipeline_BO_2013_0107_CDBU.xlsx'

isstr(文件名)

答案=

 0

这太奇怪了。任何人都可以帮助我吗?太感谢了。

4

1 回答 1

3

它看起来像是names一个cellstr而不是一个char数组。如果是这样,用括号索引它names(2)会返回一个 1 长的 cellstr 数组,而不是 char 数组。当strcat使用它的任何参数作为 cellstr 调用时,它返回一个 cellstr。然后xlsread出错,因为它想要 a char,而不是 a cellstr

而不是仅仅调用isstror ischaron filename,do class(filename),它会告诉你它是什么。

另一个线索是filename用引号显示的。这就是 cellstr 的显示方式。如果它是一个 char 数组,它将不带引号显示。

如果是这种情况,并且names是 cellstr,则需要使用{}索引来“弹出”单元格内容。

filename = strcat('Pipeline_BO_2013_',names{2},'_CDBU.xlsx')

或者您可以使用sprintf,您可能会发现它更具可读性,并且在您开始插入多个不同类型的参数后会更加灵活。

filename = sprintf('Pipeline_BO_2013_%s_CDBU.xlsx', names{2})
% An example of more flexibility:
year = 2013;
filename = sprintf('Pipeline_BO_%04d_%s_CDBU.xlsx', year, names{2})
于 2013-05-02T03:25:32.290 回答