在SSRS报表中格式化数字

8

啊!

无法忍受我自己无法弄清楚....

我在报告中使用了这个格式化数字的方法:

'€' #,0.00;('€' #,0.00)

并且会格式化为 €1,212.89

这不完全是我想要的,因为我想要的是 €1.212,89,无论服务器的地区设置如何。

所以我尝试了这个方法

'€' #.0,00;('€' #.0,00)

但这给了我这个结果:1.212.890

打出这个后,我意识到我不知道格式字符串中的 #、. 和 , 代表什么意思……

6个回答

8
您可以在此处找到逗号和句号的动态行为定义:http://msdn.microsoft.com/en-us/library/0c899ak8.aspx 我认为可靠地获得您想要的最好方法是将语言环境硬编码到此字段的表达式中。
= (new Decimal(11123.55)).ToString("€#,0.00;(€#,0.00)",
        new System.Globalization.CultureInfo("es-ES"))

这将始终使用逗号作为小数点,句点作为百万、千位等。

有一些更加动态的方法,可以始终以客户端本地设置格式返回,这通常是更好的选择。


1
是的。我从一个在BIDS中开发而不是报表生成器中的SSRS文本框中复制并粘贴了那段代码。如果您在多个地方使用它,应该使用嵌入式代码片段。 - Jamie F
1
您,先生,是一位英雄。感谢@JamieF。 - Eon

5
我知道这是一个旧线程,但如果有人需要的话,有一种最简单和正确的方法:
  1. 右键单击表达式的文本框
  2. 在弹出的“文本框属性”中选择“数字”
  3. 在“类别”中选择“数字”
  4. 选中“使用千位分隔符”
  5. 点击确定

要“自定义”您的“千位分隔符”:

  1. 选择您要表达的文本框
  2. 在右侧的属性中,在“语言”属性中应用正确的区域设置。例如,选择“fr-CH”以获得123'456,否则默认为英文分隔符123,456。

4

试一试这个。它会将您的值格式化为正确的小数位数。

=format(1212.89,"€#,#.00")

2
这段代码可以正常运行(输出1,212.89)。但我想要小数点和千位分隔符交换位置。所以我尝试了这个:=format(1212.89,"€#.#,00"),但是它输出的是1212.890。 - Michel
2
格式字符串中的句点将转换为报告生成时使用的任何区域设置的小数分隔符(这可以是用户区域设置或服务器区域设置,具体取决于设置)。格式中的逗号将成为相同区域设置的千位分隔符。您可以使用转义逗号(“\,”)强制使用逗号,但这仍然很难放置在正确的位置,特别是因为您可能需要在百万和千位数中使用它。 - Jamie F

2

对于印度货币,在值字段中使用类似=Format(Fields!ServiceTaxAmt.Value,"##,##,##,###.00")的格式,并将语言值更改为hi-in以适用于报表属性。


2
您可以使用格式 € #,0.00,并通过在报告区域外单击并在右侧属性窗格中转到本地化 -> 语言来设置报告的语言为de-DE。

1

使用[将语言设置为hi-IN,格式设置为“##,##,##,###.00”]可以正确运行此程序。

感谢您的努力。

也可以通过以下步骤实现相同的效果:

  1. 进入文本框属性
  2. 在数字选项卡中选择数字类别
  3. 选中[使用1000分隔符(,)]旁边的复选框
  4. 单击确定

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接