MATLAB xlsread函数导入日期

时间:2016-09-05 19:13:43

标签: excel matlab date

感谢您查看我的问题。

我有一个奇怪的问题,将xlsx文件导入MATLAB R2016a(Mac OS X),更具体地说是导入日期。

我使用以下代码从工作表中导入我的银行对帐单历史记录'过去'在xlsx文件中' bank_statements.xlsx'。还包括第1列的片段,日期格式为dd / mm / yyyy格式。

[ndata, text, data] = xlsread('bank_statements.xlsx','Past');

Column 1 dates in dd/mm/yyyy format

我的理解是MATLAB使用过滤器来区分文本和数字数据,这些数据在“文本”中表示。和'数据'数组分别在' ndata'是包含所有内容的单元格数组。以前,在MATLAB 2015a(Windows)上运行脚本时,第1列中的日期被视为字符串并填充在'文本中。数组,而在MATLAB 2016a(Mac OS X)上,文本数组的第1列为空白。我假设这是因为更新了xlsread函数如何解释日期信息。

这是一个奇怪的部分。在通过Variables窗口检查文本数组并在命令窗口中引用时,将文本(2,1)显示为空,在此"空"上执行datenum函数。单元格成功以编号格式提供日期:

enter image description here

虽然我可以通过使用ndata数组来解决这个问题(或者忽略了上述对我来说没有意义的事实)我真的很想了解这里发生了什么,而且看似空洞单元格实际上可以保存可以执行操作的信息。

致以最诚挚的问候,

吉姆

1 个答案:

答案 0 :(得分:0)

我能够复制你的问题,虽然我无法回答所发生的事情的复杂性,但我可以提出一个建议。当我转换一串非日期文本时,我只能复制它,这让我相信导入数据的方式可能存在问题。

而不是:

[ndata,text,data] = xlsread('bank_statements.xlsx','Past');

如果有的话,可以尝试添加@convertSpreadsheetDates函数,以及要导入的值范围,即

[ndata,text,data] = xlsread('bank_statements.xlsx','Past','A2:A100','',@convertSpreadsheetDates);

可能不是你想要的东西,但它可能会有所帮助!