Excel国际日期格式

时间:2013-11-07 10:15:38

标签: c++ excel datetime locale

我在格式化Excel日期时遇到问题,因此它可以在国际范围内使用。我们的程序是用C ++编写的,使用COM将数据从我们的数据库导出到Excel,这包括datetime字段。

如果我们不提供格式化掩码,Excel的某些安装会将这些日期显示为序列号(自1900.01.01以来的天数,然后是24小时分数的时间)。这对人类来说是不可读的,所以我们发现我们必须提供一个日期格式化掩码,以确保它显示可读。

问题 - 我认为 - 是Excel使用国际格式化掩码。例如;英国日期时间格式掩码可能是“YYYY-MM-DD HH:MM”。

但是如果将格式掩码发送到瑞典安装的Excel,则会失败,因为瑞典语版本的Excel使用“ÅÅÅÅ-MM-DD tt:mm”。

在我们的应用程序中使用150种不同的国家日期时间格式模板来支持不同的国家是非常不切实际的。

有没有办法编写格式化掩码,以便它们包含区域设置,以便我们可以使用一个单独的掩码?

2 个答案:

答案 0 :(得分:0)

除非您在Excel中使用日期功能,否则处理此问题的最简单方法是确定格式,然后以该格式自行创建字符串并相应地设置单元格。

这个漫画:http://xkcd.com/1179/可能会帮助您选择一个标准。否则,在不同国家/地区打开文件的客户端将具有不同格式的数据。只需选择标准并强制您的数据达到该标准。

编辑补充说:有些图书馆可以让您的图片变得非常简单...... http://www.libxl.com/read-write-excel-date-time.html

编辑添加第2部分:基本上我想要的是避免要求asmk并自己格式化数据(如果这有意义的话)。

答案 1 :(得分:0)

我建议您执行以下操作:在特定单元格上创建具有日期格式的Excel,并将其保存以供您的程序使用。

现在,当程序运行时,它将打开此使用此excel文件,以从excel和指定的单元格中检索本地日期格式。

如果要保存多种格式,只需为它们使用不同的单元格。

这不是一个好方法,但会在afaik工作。

另外,您可以考虑创建一个xla(m)文件,该文件将使用vba和命令通过以下函数反馈本地格式化字符:

Public Function localChar(charIn As Range) As String
    localChar = charIn.NumberFormatLocal
End Function

也不是一个非常干净的方法,但它可能会为你做到这一点。