VC++读取Excel表格中的日期后显示的是数字

读取Excel表格中的值显示在ListCtrl上,其他字段都是正常的,但是日期一列总是出错。比如日期为2009-3-10,但显示出来却是39882。请问是怎么回事? CListCtrl m_list; CString strText; _variant_t disp,val; Range cell; m_list.InsertItem(i,""); for(int i=0;i<300;i++) { for(int n=0;n<30;n++) { disp = rgMyRge.GetItem(_variant_t((long)(i+1)),_variant_t((long)(n+1))); cell = disp.pdispVal; val = cell.GetValue2(); USES_CONVERSION; if(val.vt == VT_BSTR) { m_list.SetItemText(i,n,OLE2T(val.bstrVal)); } else if(val.vt == VT_R8) { strText.Format("%.0f",val.dblVal); m_list.SetItemText(i,n,strText); } } }

第1个回答  2019-08-28
EXCEL里的日期格式是从计算天数转换过来的,你返回的39882这个数字,就是从1900-1-1到2009-3-10的总天数。
如果你需要直接返回日期,可以在EXCEL中将日期数据转换为文本格式,转换方法为:将日期数据复制粘贴到WORD中,返回EXCEL,将日期内容删除,修改单元格格式为文本,然后返回WORD,重新复制数据,然后粘贴到EXCEL里。
当然如果你精通C++的话,你也可以将返回值转换为日期格式。这个我就不懂了。
只能帮你这些了。希望能帮你解决问题。