【问题标题】:stop matlab from trying to read "~$" temporary excel files阻止 matlab 尝试读取“~$”临时 excel 文件
【发布时间】: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


【解决方案1】:

您可以将文件名过滤为不包含 $: 的文件名

    filesData = [dir([folder,'\*.xlsx']);dir([folder,'\*.xls'])];
    filenames = {filesData.name}';

    filenames2 = filenames(~contains(filenames,'$'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 2012-11-22
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多