【发布时间】:2015-09-17 09:42:33
【问题描述】:
之前使用过 COM Interop Excel 并遇到同样的问题,已解决 here。我现在面临与 EPPlus 库(版本 4.0.4.0)相同的问题。
这段代码应该格式化输出文件中的数字:
for (int i = 10; i > 27; i += 4) {
//worksheetOut.Cells[String.Format("{0}:{1}", i, i + 1)].Style.Numberformat.Format = null;
worksheetOut.Cells[String.Format("{0}:{1}", i, i + 1)].Style.Numberformat.Format = "€###.###.###";
}
我不知道如何使用上面列出的问题中的解决方案,看到设置此格式的“唯一”方法是通过字符串,所以我无法添加文化设置。
编辑:
显然您不能在整行上放置数字格式。 我试过这段代码:
//range with only numbers, so no empty values or 'General' values
worksheetOut.Cells["A18:F19"].Style.Numberformat.Format = "###.###.###";
给出this result,我认为我不能将小数分隔符更改为,,将千位分隔符更改为.
【问题讨论】:
-
你从来没有提到,是的问题是什么? 您无法更改分隔符,这是影响数字显示方式方式的 Excel 用户设置。事实上,您的格式字符串是错误的,可能会被忽略 -
.是特定于文化的小数 占位符。在某些文化中,它是.,在其他文化中,它将呈现为,。如果要指定千位占位符,请使用€###,###,###,如果要限制小数,请使用€###,###,###.## -
您为什么不 (a) 在一次性工作簿中使用 Excel 设置您想要的格式; (b) 检查生成的
NumberFormat.Format属性; (c) 在你的代码中使用这个值。 -
链接的问题与 Excel 无关(它与 String.Format 相关),如果它似乎有效,那是因为 Excel 用户与您的应用程序或 Excel 使用的语言环境相同将单元格值视为文本,而不是数字。
-
@Panagiotis Kanavos,在我之前的问题中,可以更改文化设置,并给了我想要的结果(虽然这是在 COM interop Excel 中)。我想这在 EPPlus 中是不可能的?我已经阅读了最后一条评论,我明白为什么那不可能了。
-
在另一个问题中,没有指定数字格式,值被视为文本。在这种情况下,指定了数字格式(尽管无效),这意味着这些值将被视为 数字。如果您尝试更改用户帐户的区域设置,您会发现 Excel 将以不同的方式显示千位和小数
标签: c# excel visual-studio-2013 number-formatting epplus