【问题标题】:matlab lose response when use xlsread reading a large spreadsheet使用 xlsread 读取大型电子表格时,matlab 失去响应
【发布时间】:2016-04-15 00:37:10
【问题描述】:

我正在尝试使用 xlsread 函数读取 6000x2700(xlsx 文件)的电子表格。

我有两个问题:

首先,当我使用类似的东西时

[num,txt,~]=xlsread(input_file,input_sheet,'A1:CYY6596')

Matlab 一直显示“忙碌”并失去响应(而我可以在 30 秒内在 excel 中打开它)。

如果我不想遍历 xlsx 文件的范围,有什么解决方案吗?换句话说,我可以使用 xlsread 将这种大小的电子表格转储到 matlab 中吗?

或者,也许我可以使用循环逐个范围地读取这些文件,但除非我先读取整个文件,否则我无法识别每个电子表格的最后一列。因此,如果我无法识别最后一列,则很难进行循环并对文件进行解释。

所以我的第二个问题是:有没有办法在不阅读整个电子表格的情况下识别电子表格的最后一列?

谢谢。

编辑:但是,如果我运行仅读取电子表格的前 400 列 ('A1:RY6596') 的类似代码,则不会发生此类问题。

【问题讨论】:

  • 这是一个技术含量低的解决方案,但如果 xlsread 不能很好地处理此文件,您可能需要使用 Excel 将 .xlsx 文件保存为 .csv 文件,然后使用 Matlab 将其导入.
  • 感谢您的回答。我尝试使用 csv 文件,但 Matlab 仍然失去响应(一段时间后,保持占用 0% cpu 和不变的内存)。

标签: matlab xlsread


【解决方案1】:

您使用的是哪个版本的 matlab? matlab 加载 bix Excel 文件时出现问题。 在 csv 中转换 Excel 并使用 M = csvread(filename)。 您也可以尝试将 .xlsx 转换为 .xls。

【讨论】:

  • 我正在使用 R2015b。据我所知, csvread 只读取数字,对吗?但是,我也想读取电子表格中的字符串。这适用吗?无论如何,我想可能先试一试。谢谢。
  • 我试过 csvread。但它无法读取并给出错误:“文件和格式字符串不匹配。从文件中读取'数字'字段时出现问题”。我还仔细检查了 csvread 的文档,很确定它无法读取非数字数据,而我的电子表格中有很多数据。
【解决方案2】:

你可以试试这个工具 File Exchange

【讨论】:

  • 谢谢你,我知道它可以读取文本和数字。我已经将电子表格分成了 5-6 个部分,我的问题已经解决了。无论如何,感谢您提供的工具,它可能有一天会帮助我或其他人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多