1

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

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

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

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

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

有没有办法编写格式掩码,以便它们包含语言环境,这样我们就可以使用一个单一的掩码?

4

2 回答 2

0

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

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

编辑添加:有一些库可以让你也很容易做到这一点...... http://www.libxl.com/read-write-excel-date-time.html

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

于 2013-11-07T10:30:43.153 回答
0

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

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

当您有多种格式要保存时,只需为它们使用不同的单元格。

这不是一个好方法,但会起作用。

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

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

也不是一个非常干净的方法,但它可能对你有用。

于 2013-11-11T16:48:58.960 回答