【发布时间】:2017-04-03 10:35:29
【问题描述】:
我有一个循环,可以从文件夹中的多个 excel 文件中读取表格。但是我收到以下错误:
Unable to open file 'C:\MATLAB\Data\fish\~$volume022017.xlsx' as a workbook. Check that the file exists, read access is available, and the file is a valid spreadsheet file.我怀疑这是一个临时文件(我无法在资源管理器中看到)。文件列表是使用 'dir' 创建的:
filesData = [dir([folder,'\*.xlsx']);dir([folder,'\*.xls'])];
filenames = {filesData.name}';
'filenames' 也没有列出这个文件。
然后我用
tmpTable=readtable( [folder, filenames{i}],'sheet',Tabs{term},'ReadRowNames',true);
这给出了错误。
【问题讨论】:
-
很奇怪。你有没有尝试调试它?发生错误时检查
i的值,然后检查filenames内此单元格编号中的文件 -
我检查了文件名,我怀疑之前的循环已经打开并关闭了它。我在第二个循环中建立了一个暂停,这让 excel 有时间自然地删除它,这解决了问题,但有点粗略的解决方案。
-
如果开头调用
dir,里面的名字应该不会受到打开或关闭文件的影响。 Matlab 将尝试仅打开您读入filesData的文件 -
同意。然而,代码的结构需要再次调用它,因为它会检查文件夹中是否有新添加。这就是 dir 被调用两次的原因。
-
dir之后可以很方便的删除所有包含~$的文件名。
标签: excel matlab loops temporary-files xlsread