虽然Excel中使用VT_DATE和SystemTimeToVariantTime指示,但Excel不显示值

我们通过COM自动化(C ++)导出到excel(office2010)。 这意味着我们使用SafeArrays,VARIANT和使用excel API,如范围 – > PutValue()。

我们对某些(不是全部)具有导出date值的客户机器有问题。 我们通常将VARIANT的值指定为VT_DATE并填入date成员。 像这样的东西:

VARIANT vValue; SYSTEMTIME SystemTimeVal; short Year=2011; short Month=11; short Day=14; short Hour=0; short Minute=0; short Second=0; SystemTimeVal.wYear = (WORD)Year; SystemTimeVal.wMonth = (WORD)Month; SystemTimeVal.wDay = (WORD)Day; SystemTimeVal.wHour = (WORD)Hour; SystemTimeVal.wMinute = (WORD)Minute; SystemTimeVal.wSecond = (WORD)Second; V_VT(&vValue) = VT_DATE; SystemTimeToVariantTime(&SystemTimeVal, &(vValue.date)); // SafeArrayPutElement related code omitted here pRange->PutValue(variantContainingSafeArray); // ... 

打开xls文件时,显示的值是一个数字。 如果您在Excel中打开“格式”对话框,则应为“常规”。 在这种情况下,编号是40861.当Excel将其格式设置为date时,将显示2011年11月14日的正确date。

在我的电脑和其他客户,Excel很好地格式化为date。 发生这种情况是法国客户,但同事使用相同的地区设置和语言设置,并在他们的电脑上,每一件事情都很好…我们还有其他几个法国客户,从来没有得到他们的投诉。

我想这一定是一些机器的具体问题,但没有线索…

有人遇到同样的问题吗?

巴特

它看起来像安装SP1的Office修复问题…