在 Grid++Report 中很多报表数据需要通过一定的格式化规则展现出用户需要的显示方式,同一数据配以不同的格式化规则,会得到不同的显示内容。一般是通过对象的格式化串属性来指定数据的格式化规则,格式化串的属性名称为“格式(Format)”。有以下报表子对象可以设置数据显示格式:
Grid++Report 为定义数据显示格式实现了专门的设置对话框,通过这些设置对话框可以很直观的设置数据显示格式。在选中对象的格式属性之后,点击属性框右端的“...”按钮可以打开对应的显示格式设置对话框。综合文字框在其“文本”属性下的表达式定义对话框中可以进入显示格式设置对话框。
Grid++Report 的数据格式化规则与主流编程平台保持基本一致。在显示格式设置对话框中预先定义了很多常用格式,这些常用格式也基本满足我们的多数需要,可以从这些预设格式中选用我们想要的。通过观察这些预设格式对模拟数据的示范输出,也可以基本了解格式串的格式化规则,从而也可以输入自己想要的自定义格式串
数字格式设置对话框
下图为数字格式设置对话框。对话框中预先定义了很多常用格式,并对这些常用格式进行了分类,可以从预设格式列表中选择想要的格式。也可以在右上方的格式编辑框中直接输入格式文字。在左下方提供了小数位输入编辑框及其它格式选项设置 CheckBox 控件,通过这些控件可以定义格式,最新定义的格式串将反映在格式编辑框中。在右下方的示例框中,会用当前设置的格式串格式化出测试数据的显示文字,从而直接观察格式串的效果。
下表列出数字格式串中字符的含义:
字符 | 含义 |
0 | 数字占位符。显示一个数字或 0。如果表达式在格式字符串中出现 0 的位置上有数字,则显示该数字;否则在该位置显示 0。 如果数字的位数少于格式表达式中 0 的个数(小数点任一侧),则显示前导零或尾随零。如果数字的小数点分隔符右侧的位数多于格式表达式中小数点分隔符右侧零的个数,则将数字舍入到与零的个数相同的小数位置。如果数字的小数点分隔符左侧的位数多于格式表达式中小数点分隔符左侧零的个数,则不做任何修改地显示额外的数字。 |
# | 数字占位符。显示一个数字或不显示任何数字。如果表达式在格式字符串中出现 # 字符的位置上有数字,则显示该数字;否则该位置不显示任何数字。 该符号与 0 数字占位符的作用相似,不同的是当数字的位数少于格式表达式中小数点分隔符任一侧 # 字符的个数时,不显示前导零和尾随零 |
. | 小数点占位符。小数点占位符确定小数点分隔符两侧显示的数字个数。如果格式表达式中该符号的左侧只包含 # 字符,则小于 1 的数字将以小数点分隔符开头。若要显示与小数一起显示的前导零,请将零用作小数点分隔符左侧的第一个数字占位符。在某些区域设置中,逗号用作小数点分隔符。格式化输出中用作小数点占位符的实际字符取决于系统所识别的数字格式。这样,即使所在的区域使用逗号作为小数点占位符,也应该使用句点作为格式中的小数点占位符。格式化的字符串将以相应于区域设置的正确格式显示。 |
, | 千分位分隔符。只要千分位分隔符在格式串中出现,超过 1000 的数据就会显示千分位。 |
% | 百分比占位符。用 100 乘以数据再格式化,并在最后显示百分比符号(%)。 |
( 与 ) | 负数括号显示占位符。在格式化负数时,负数符号不会生成,而是在左右两端加上“(”与“)”。 |
$ | 货币符号占位符。根据 Windows 系统当前的区域设置得到对应货币表示符号,并显示在货币符号占位符出现的位置。 |
$$ | 汉字大写金额占位符。当格式串仅为两个$符号时,数字将以大写金额的方式显示,格式化之前数字保留两位小数,按四舍五入规则截除多余小数位。 如 1234.8765 显示为“壹千贰佰叁拾肆元捌角捌分”。 |
$$$ | 汉字大写金额数字占位符。当格式串中同时包含三个连在一起的$符号时,表示数字将被格式化成纯大写金额数字。 这种方式与“$$”的区别就是输出中不包含“拾佰千”等金额位文字,且连续出现的 0 也会重复输出,通过格式串的其它部分还可以指定小数位数。这种格式显示可用于发票等需要套打大写金额的地方。 如对 1234.8765 应用“$$$0.00”,会显示为“壹贰叁肆捌捌”。 |
; | 分别定义正数值,负数值与零值的显示格式占位符。见下面详细说明。 |
其它字符 | 根据其出现位置,会追加在格式化出来的数字文字的左端或右端。 |
正数、负数与零分别设定显示格式
如果对正数值,负数值与零值要按照不同的格式规则进行格式化时,可以为每种类型数字设定不同的显示格式,每种类型数字的显示格式通过“;”分隔。第一部分为正数的显示格式,第二部分为负数的显示格式,第三部分为零的显示格式。如果负数的显示格式或零的显示格式没有设置,这其应用正数的显示格式。
举例:实现零值不显示的显示格式为“#,##0.00;;#”,正数的显示格式为“#,##0.00”;负数的显示格式为空,负数与正数应用相同的显示格式。零的显示格式为“#”,所以 0 不会格式化出任何文字,从而实现 0 值不显示。
日期时间格式设置对话框
下图为日期时间格式设置对话框。对话框中预先定义了很多常用格式,并对这些常用格式进行了分类,可以从预设格式列表中选择想要的格式。也可以在右上方的格式编辑框中直接输入格式文字。在右下方的示例框中,会用设置的格式串格式化出当前电脑的日期时间的显示文字,从而直接观察格式串的效果。
表列出日期时间格式串中字符的含义:
字符 | 含义 |
: | 时间分隔符。在某些区域设置中,可以使用其他字符表示时间分隔符。时间分隔符在格式化时间值时分隔小时、分钟和秒。格式化输出中用作时间分隔符的实际字符由系统的 LocaleID 值确定。 |
/ | 日期分隔符。在某些区域设置中,可以使用其他字符表示日期分隔符。日期分隔符在格式化日期值时分隔日、月和年。格式化输出中用作日期分隔符的实际字符由您的区域设置确定。 |
d | 将日显示为不带前导零的数字(如 1)。 |
dd | 将日显示为带前导零的数字(如 01)。 |
ddd | 将日显示为缩写形式(例如 Sun)。 |
dddd | 将日显示为全名(例如 Sunday)。 |
M | 将月份显示为不带前导零的数字(如一月表示为 1)。 |
MM | 将月份显示为带前导零的数字(例如 01/12/01 )。 |
MMM | 将月份显示为缩写形式(例如 Jan)。 |
MMMM | 将月份显示为完整月份名(例如 January)。 |
h | 使用 12 小时制将小时显示为不带前导零的数字(例如 1:15:15 PM)。 |
hh | 使用 12 小时制将小时显示为带前导零的数字(例如 01:15:15 PM)。 |
H | 使用 24 小时制将小时显示为不带前导零的数字(例如 1:15:15)。 |
HH | 使用 24 小时制将小时显示为带前导零的数字(例如 01:15:15)。 |
m | 将分钟显示为不带前导零的数字(例如 12:1:15)。 |
mm | 将分钟显示为带前导零的数字(例如 12:01:15)。 |
s | 将秒显示为不带前导零的数字(例如 12:15:5 )。 |
ss | 将秒显示为带前导零的数字(例如 12:15:05)。 |
tt | 使用 12 小时制,并对中午之前任一小时显示大写的 AM;对中午到 11:59 P.M 之间的任一小时显示大写的 PM。 |
y | 将年份 (0-9) 显示为不带前导零的数字。 |
yy | 以带前导零的两位数字格式显示年份(如果适用)。 |
yyy | 以四位数字格式显示年份。 |
yyyy | 以四位数字格式显示年份。 |
其它字符 | 根据其出现位置,原样输出在对应的位置。 |
布尔格式设置对话框
下图为布尔格式设置对话框。对话框中预先定义了很多常用格式,可以从预设格式列表中选择想要的格式。也可以在右上方的格式编辑框中直接输入格式文字。
关于格式串的说明
因为布尔(逻辑)类型数据只有两种可能值:真或假,所以布尔格式也很简单,通过“:”将整个格式串分隔成两部分,左边部分就是真值的显示文字,右边部分就是假值的显示文字。如果某一部分没有定义,对应的值也不会格式化出显示文字。