在使用LibXL读取Excel数据时,发现如果表格数据为时间格式,读取出来的是一串小于1的纯小数。经过测试发现,Excel中时间格式的存储就是按照纯小数格式存储的,这样便于用户的自定义时间样式。
Excel中存储的纯小数代表了该时间在一天24H内的占比,因此程序获取到该纯小数后需要自行转换为时分秒,代码如下:
#include<iostream>
using namespace std;
void excelTimeToTime(const double &excelTime, int &hour, int &min, int &sec)
{
double h = excelTime*24;
hour = int(h);
double m = (h-hour)*60;
min = int(m);
double s = (m-min)*60;
sec = round(s);//秒需要四舍五入
}
int main()
{
double time = 0.68932;
int h,m,s;
excelTimeToTime(time,h,m,s);
cout<<" Hour:"<<h<<" Min:"<<m<<" Sec:"<<s;
}
输出结果: Hour:16 Min:32 Sec:37