首页 文章

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

提问于
浏览
0

我试图在一个循环中读取多个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

    你应该使用csvread而不是xlsread,因为xlsread只读取.xls和.xlsx文件 .

相关问题