从excel文件中读取datenum而不是datestr

从excel文件中读取datenum而不是datestr,excel,matlab,datetime,matlab-table,Excel,Matlab,Datetime,Matlab Table,我正试图从excel工作表中读取测试表,我的excel工作表如下所示 Building location start_date start_time end_date end_time number Test_Building 1.08 12.06.2016 19:00 12.06.2016 19:30 7 现在,当我在matlab中以表格的形式阅读时,使用: R = readtable('testtable.xlsx','R

我正试图从excel工作表中读取测试表,我的excel工作表如下所示

 Building      location start_date  start_time  end_date    end_time    number
 Test_Building  1.08    12.06.2016  19:00       12.06.2016      19:30    7
现在,当我在matlab中以表格的形式阅读时,使用:

R = readtable('testtable.xlsx','ReadVariableNames',1) 
我得到的是

R = 

       Building        location     start_date     start_time      end_date      end_time    number
    _______________    ________    ____________    ____________    ____________    ________    ______

    'Test_Building'    1.08        '12.06.2016'    0.79167         '12.06.2016'    0.8125      7     

现在,如果您注意到
start\u time
end\u time
是以
datenum
格式检索的,而不是以
datestr
格式检索的,那么我如何保存这段时间,以便在检索这些变量时,它们是以datestr格式检索的?

这里要了解的关键是,如果您在Excel中使用日期,它不会存储为字符串,而是存储为相应的datenum。特别是,打开同一文件的两个人可能会根据他们的设置看到不同的字符串

因此没有“从excel获取日期字符串”这样的事情。

有一些解决方法,例如,将日期作为字符串存储在excel中(如您在注释中所述)。然而,这并不总是可能的

根据您当前的设置,甚至有可能加载Excel显示的字符串,但这当然不是很容易移植的,如果更改设置,您很容易遇到麻烦,因为Matlab中的以下计算将不再与格式匹配。更不用说,您需要单独解析具有不同格式的日期列,即使它们位于同一文件中

因此,我建议如下:

读取datenum,并在MATLAB中解析它 当然,您可能希望输入一个日期,但即使您将其解析为字符串,这仍然是推荐的通用解决方案

您在评论中提到要使用datevec,因此您应该能够使用以下两个选项之一:

DateVector = datevec(DateNumber)

根据您的来源,您可能需要从数字中添加或减去常数以获得正确的日期。(Excel可能不需要此选项,但只需尝试一次。)

您需要在调用
readtable
时指定“格式”选项,并为开始时间和结束时间指定%s(字符串)哦,是的!感谢您的想法
Format
属性在
readtable
中存在,但它给了我一个错误
无效的参数名称:Format。
您可以显示您使用Format选项调用readtable函数的代码行吗。hmmm,您的matlab版本可能没有readtable的格式选项。非常感谢您的详细回复,您的解决方案有效!我不能直接使用
datevec
的原因是,这些excel绘图是由一个函数检索的,该函数将这次读取为
datetime(TMP.start\u time、'InputFormat'、'HH:mm:ss')
,您可以看到输入格式是
HH:mm:ss
,我不想更改该函数,因为它也适用于其他excel文件。。。再次感谢你的帮助