有没有办法访问标准的数字格式字符串,如“N02”

本文关键字:字符串 N02 格式 数字 访问 标准 有没有 | 更新日期: 2023-09-27 18:36:36

在数据网格中,我显示使用标准格式字符串格式化的数值,在本例中为"N02"。当我将此数据导出到 excel 时,我想将 excel 列的格式设置为相同的格式。有没有办法评估当前区域设置的"N02"格式并获取实际的格式字符串?

如果没有,我想我必须尝试使用当前 NumberFormat 的 NumberNegativePattern、NumberGroupSize、NumberGroupSeparator 和 NumberDecimalSeparator 属性来重建它,但我真的不喜欢我的机会比我的区域设置/区域性更合适。

以下是我要为 Excel 互操作调用设置的内容:

(Range)excelSheet.Columns[columnLetter + ":" + columnLetter, Type.Missing])。数字格式 = xxxxx;

我想要 xxxxx 对于"N"和"N02",我知道我可以使用这样的东西:"#,##0.00;-#,##0.00" 表示"N02"但这让整个事情的文化变得具体。

有没有办法访问标准的数字格式字符串,如“N02”

这里的问题是双重的;首先,Excel 互操作在处理数字样式时仅公开一组非常有限的功能。其次,Excel 本身很少关注特定于区域性的格式。

例如,在 Excel 的 Open XML 标准中,所有内置数字格式样式都是硬编码的(请参阅 ECMA 标准文档,第 2128 页)。尽管根据用户的区域设置使用不同的样式,但 Excel 不会像 .NET Framework 的全球化功能那样关注用户区域设置中的任何替代。即使将标准数字格式字符串与其 Excel 等效项(按区域)结合使用,由于 Windows 中的区域设置,格式仍可能有所不同。

正如 flindeberg 在他们的评论中提到的那样,将单元格值格式化为文本是真正确保数字在 .NET 中的格式设置方式是它们在 Excel 中的显示方式的唯一方法。

由于您正在使用的限制,我建议在生成电子表格时针对固定区域性,而不是尝试为每种区域性进行专业化。通过坚持固定区域性的规则,您可以相当轻松地编写算法,将标准数字格式字符串转换为其扩展形式,以便与 Excel 一起使用。