我试图在一个循环中读取多个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。
我很乐意提供解决此问题所需的更多信息
感谢。
答案 0 :(得分:0)
您应该使用 csvread 而不是 xlsread ,因为 xlsread 只需阅读。 xls 和。 xlsx 文件。