在循环中使用xlsread时出现matlab错误

时间:2016-12-14 18:44:43

标签: excel matlab csv

我试图在一个循环中读取多个csv文件,然后对它们进行一些分析。

我使用MatlabR2015b和Excel 2016。

问题是,在第二次调用xlsread时,我收到以下错误:

>>xlsread('R:\Experiments\ResoFreq_vis_BEH\TapFlick_vis_BEH\Data\s01_rr\1_fingerTapping_s01_rr.csv')

Error using xlsread (line 251)

没有解释没有消息,没有。 经过一些调试后,我发现它在以下命令中失败:

Excel.workbooks.Open(filename, 0, readOnly);

在openExcelWorkbook.m文件中,该文件位于xlsread堆栈的某个位置。

我发现很少有人遇到同样的问题,他们的解决方案是使用以下代码强制关闭EXCEL32进程:

[~, computer] = system('hostname');
[~, user] = system('whoami');
[~, alltask] = system(['tasklist /S ', computer, ' /U ', user]);
excelPID = regexp(alltask, 'EXCEL.EXE\s*(\d+)\s', 'tokens')
for i = 1 : length(excelPID)
  killPID = cell2mat(excelPID{i});
  system(['taskkill /f /pid ', killPID]);
end

然而,这对我不起作用。

经过一段时间的挖掘,我尝试手动查看csv我试图打开,同时调试,这意味着在Excel.workbooks.Open调用的断点处停止后,我使用了:

actxserver('Excel.Application')
ans.Workbooks.Open(filename)

给了我以下错误:

Error using Interface.000208DB_0000_0000_C000_000000000046/Open

通过matlab检查器查看excel进程时,与Workbooks相关联。

这就是我设法找到与我的问题相关的所有信息。

目前唯一对我有用的是运行xlsread,然后从任务管理器手动关闭excel进程,然后再次运行它,直到我拥有所有数据,然后分析,这是不可能考虑的我需要加载的文件数量。

我无法使用csvread,因为我的文件有混合类型,而我尝试过的所有其他功能都没有正确读取csvs (我有一个看起来像这样的字段" [,...,]"并且除了xlsread之外,该字段在每个函数中都被解释为多行 因此我觉得我别无选择,只能以某种方式修复xlsread。

我很乐意提供解决此问题所需的更多信息

感谢。

1 个答案:

答案 0 :(得分:0)

您应该使用 csvread 而不是 xlsread ,因为 xlsread 只需阅读。 xls 和。 xlsx 文件。