【发布时间】:2012-06-12 04:59:31
【问题描述】:
在数据网格中,我正在显示使用标准格式字符串格式化的数值,在本例中为“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" 但这使整个事情变得特定于文化。
【问题讨论】:
-
最终产品的用途是什么? excel表格最后是否包含数字或字符串有关系吗?
foreach (var cell in sheet) if (cell != null && IsNumeric(cell)) cell = String.Format("{0:N02}", cell);(伪代码)能解决吗?字符串化是我所知道的在这种程度上控制 excel 格式的唯一方法。但另一方面,我不是 excel-com-pro :P -
我很确定,当您以编程方式设置 Excel 的 NumberFormat 时,无论文化如何,您始终使用不变格式。文化感知字符串仅在通过 Excel UI 设置 NumberFormat 时使用。
-
谢谢大家 - 我需要它在 excel 中保持一个格式化的数字而不是一个字符串,所以将采用不变的格式方法
标签: c# formatting excel-interop