Excel 中的数字格式不适用于 EPPlus

Posted

技术标签:

【中文标题】Excel 中的数字格式不适用于 EPPlus【英文标题】:Numberformatting in Excel doesn't work with EPPlus 【发布时间】: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 = "€###.###.###";

给this result

我不知道如何使用上面列出的问题中的解决方案,看到设置此格式的“唯一”方法是通过字符串,所以我无法添加文化设置。

编辑:

显然您不能在整行上放置数字格式。 我试过这段代码:

//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 将以不同的方式显示千位和小数 【参考方案1】:

应该是我认为(从最后删除格式)

worksheetOut.Cells[String.Format("0:1", i, i + 1)].Style.NumberFormat= "€###.###.###";

【讨论】:

更改为 NumberFormat

以上是关于Excel 中的数字格式不适用于 EPPlus的主要内容,如果未能解决你的问题,请参考以下文章

“Excel.run”是不是不适用于用户定义的函数?

LabelHandle 上的 canShrink 属性不适用于使用 BIRT 的 PDF 和 EXCEL 报告

Excel - 在数字格式中使用公式/计算

为啥 Intl.NumberFormat 不适用于 Safari 和 Firefox 中的单位?

为啥 %A 文本格式不适用于 F# 中的内部模块?

谷歌表格中的条件格式不适用于重复项