0

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

如果不是,我想我必须尝试使用​​当前 NumberFormat 的 NumberNegativePattern、NumberGroupSizes、NumberGroupSeparator 和 NumberDecimalSeparator 属性来重建它,但我真的不喜欢我的机会比我的语言环境/文化更适合我.

这是我想为我的 Excel 互操作调用设置的内容:

((范围)excelSheet.Columns[columnLetter + ":" + columnLetter, Type.Missing]).NumberFormat = xxxxx;

我希望“N”和“N02”都使用 xxxxx,我知道我可以使用类似这样的内容:“#,##0.00;-#,##0.00”作为“N02”但这使整个事情变得文化具体的。

4

1 回答 1

0

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

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

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

由于您正在使用的限制,我建议在生成电子表格时以不变的文化为目标,而不是尝试为每种文化进行专门化。通过坚持不变文化的规则,您可以相当容易地编写一个算法来将标准数字格式字符串转换为它们的扩展形式,以便与 Excel 一起使用。

于 2012-06-08T06:44:45.460 回答