【发布时间】:2012-06-12 10:43:36
【问题描述】:
我遇到了以下问题:
在我的 Delphi 程序中通过 OLE 自动执行 Excel 并尝试设置单元格的 NumberFormat 属性时,Excel 需要本地化格式的格式字符串。
通常,当通过在 Excel 中记录宏来检查格式时,Excel 期望它是这样的: Cells(1, 2).NumberFormat = "#,##0.00"
也就是说千位分隔符是“,”,小数分隔符是“.”。
实际上,我使用的是本地化版本的 Excel。在我的语言环境中,千位分隔符是“”,小数点分隔符是“,”。
因此,每当从我的 Delphi 程序中设置 NumberFormat 时,我都需要将其指定为“# ##0,00”。
我的问题是:显然,如果我在我的程序中对这些值进行硬编码,那么当我的程序与英语或其他不同本地化版本的 Excel 一起使用时,就会出现异常。是否有设置 NumberFormat 属性的“通用”方法? (使用默认的英语语言环境?)
谢谢!
更新:我在此页面上找到了一种更优雅的方法: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=920&mode=print 它是俄语的(我也不会说),但您可以轻松理解代码。
【问题讨论】:
-
在 Delphi 中,您可以使用 ThousandSeparator、DecimalSeparator 和 GetLocaleFormatSettings() 函数。它们在 SysUtils.pas 中声明
-
没关系,但我需要根据本地化版本的 Excel 调整这些设置,而不是 Windows 区域设置...
-
您可以根据Globalization and Localization of Excel Solutions使用US LCID 1033
-
您能否举一个使用 Delphi 的工作示例,用于在非美国版 Excel 上设置 LCID 1033 中的 NumberFormat?
标签: delphi excel automation ole number-formatting