2

我有两台具有相同 MATLAB 代码和相同 Excel 文件(.csv 格式)的计算机。该代码仅适用于具有 Excel 的机器。我想不出任何其他差异。

计算机是否需要 Excel 才能使 xlsread 工作?我得到的错误是无法识别的格式。

如果是这种情况,是否有任何简单的解决方法而无需获取 Excel?

编辑:似乎不需要 Excel。也许问题是文件是.csv?毕竟是格式错误。我只是无法想象为什么相同格式的文件可以在我的另一台计算机上工作。

已解决:.csv 文件是问题所在。对于读取 .csv 文件,matlab 的 importdata() 函数被证明是非常通用的。

4

3 回答 3

6

根据这个页面

如果您的系统安装了 Excel® for Windows®,包括 COM 服务器(Excel 典型安装的一部分):

所有 MATLAB® 导入选项都支持 XLS、XLSX、XLSB、XLSM、XLTM 和 XLTX 格式。

...

如果您的系统没有安装 Excel for Windows,或者 COM 服务器不可用:

所有 MATLAB 导入选项都读取 XLS、XLSX、XLSM、XLTM 和 XLTX 文件。

但是,如果您只是想导入一个逗号分隔的 ASCII 文件,那就太xlsread过分了,而且超级慢。如果您的数据是纯数字的,请使用csvreaddlmread。如果您的数据是混合的,请textscan改用。

于 2015-07-20T13:37:11.743 回答
3

xlsread(filename,sheet,xlRange,'basic')将在您的机器上不安装 Excel 的情况下工作。

其他附加参数将需要安装 Excel。

Matlab 可以本地导入字符分隔文件。

于 2015-07-20T13:31:33.437 回答
2

我从来没有xlsread在没有 Excel 的计算机上使用过,所以我不能确定。但根据文档Excel 是没有必要的;你只会失去一些功能:

num = xlsread(filename,sheet,xlRange,'basic')以基本导入模式从电子表格中读取数据。如果您的计算机没有 Excel for Windows®,则xlsread自动在basic导入模式下运行,该模式支持 XLS、XLSX、XLSM、XLTX 和 XLTM 文件。

basic模式是没有 Excel for Windows 的计算机的默认模式。在基本模式下,xlsread

  • 仅读取 XLS、XLSX、XLSM、XLTX 和 XLTM 文件。

  • xlRange读取 XLS 文件时不支持输入。在这种情况下,请使用''.xlRange

  • 不支持函数句柄输入。

  • 将所有日期作为 Excel 序列日期编号导入。Excel 序列日期编号使用与 MATLAB® 日期编号不同的参考日期。

因此,问题可能在于您使用模式xlsread中不支持的某些选项进行调用basic

于 2015-07-20T13:30:51.530 回答