从excel文件中读取datenum而不是datestr
我正试图从excel工作表中读取测试表,我的excel工作表如下所示从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
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文件。。。再次感谢你的帮助