VC++读取Excel表格中的日期后显示的是数字
读取Excel表格中的值显示在ListCtrl上,其他字段都是正常的,但是日期一列总是出错。比如日期为2009-3-10,但显示出来却是39882。请问是怎么回事?CLi...
读取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);
}
}
}
自己创建类解决了。 展开
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);
}
}
}
自己创建类解决了。 展开
展开全部
日期格式的如:2009-12-3,如果把单元格格式转换为数值后,就成了40150了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
EXCEL里的日期格式是从计算天数转换过来的,你返回的39882这个数字,就是从1900-1-1到2009-3-10的总天数。
如果你需要直接返回日期,可以在EXCEL中将日期数据转换为文本格式,转换方法为:将日期数据复制粘贴到WORD中,返回EXCEL,将日期内容删除,修改单元格格式为文本,然后返回WORD,重新复制数据,然后粘贴到EXCEL里。
当然如果你精通C++的话,你也可以将返回值转换为日期格式。这个我就不懂了。
只能帮你这些了。希望能帮你解决问题。
如果你需要直接返回日期,可以在EXCEL中将日期数据转换为文本格式,转换方法为:将日期数据复制粘贴到WORD中,返回EXCEL,将日期内容删除,修改单元格格式为文本,然后返回WORD,重新复制数据,然后粘贴到EXCEL里。
当然如果你精通C++的话,你也可以将返回值转换为日期格式。这个我就不懂了。
只能帮你这些了。希望能帮你解决问题。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询