单元格类型定义了在单元格中呈现的信息的类型,以及这种信息如何显示,用户如何与其进行交互。单元格类型可以被赋给单个的单元格,整行或者整列。
用户可以使用两种不同的单元格类型对表单中的单元格进行设置: 一种是可以简单地关联于单元格的文本格式,另一种就是显示控件或者图形化信息。我们在本篇介绍常用的文本单元格类型,下一篇介绍常用的图形单元格类型。
通用单元格 GeneralCellType对于表单中的单元格而言,通用单元格是默认的单元格类型。 除非你指定了其他的单元格类型,控件通常会默认将通用单元格类型赋给单元格。通用单元格可以被用来作为键入文本或数字的单元格,在这里格式并不重要或者这里的数据类型不依赖于特定的数据类型。
下面的示例将一个单元格设为一个通用单元格。
FarPoint.Win.Spread.CellType.GeneralCellType gnrlcell = new FarPoint.Win.Spread.CellType.GeneralCellType(); fpSpread1.ActiveSheet.Cells[1, 1].CellType = gnrlcell; |
文本单元格是最常用的单元格类型之一,用于显示文本或者将单元格内容当作文本显示。你也可以指定是否所有文本都以小写形式,大写格式,或者普通的CharacterCasing属性格式显示。CharacterSet属性授权你指定文本为仅数字,仅字母,数字和字母,或者任何ASCII字符。
通过代码设置文本单元格的基本步骤和示例代码如下:
通过创建一个 TextCellType 类的实例定义一个文本单元格。
设置文本单元格的属性。
当用户输入不可用时创建一个显示给用户的信息。
通过设置一个单元格,单元格范围,一行,一列,或者样式的CellType属性为TextCellType 对象,将文本单元格类型赋给一个单元格或者一组单元格。
FarPoint.Win.Spread.CellType.TextCellType tcell = new FarPoint.Win.Spread.CellType.TextCellType(); tcell.CharacterCasing = CharacterCasing.Upper; tcell.CharacterSet = FarPoint.Win.Spread.CellType.CharacterSet.Ascii; tcell.MaxLength = 30; tcell.Multiline = true; fpSpread1.ActiveSheet.Cells[0, 0].Text = "This is a text cell. "; fpSpread1.ActiveSheet.Cells[0, 0].CellType = tcell; |
你可以使用一个数字单元格NumberCellType用以显示一个十进制的数字,整数或者小数,下面的主题涉及了数字单元格的格式化以及计算的主要内容。
设置精度典型的情况是,数字使用双精度浮点数进行计算和存储,这样精度大约在15个数位左右。 单元格可以根据需求格式化为不同的小数位数。 例如,下列的代码可以计算单元格区域A1到A5的区域的值的总和,并且将结果显示在A6单元格中 存储在A6单元格中的数值将会有足够的精确度(达到了双精度浮点数的上限),但是显示在A6单元格中的文本将会取为其最近的一位小数的值。
NumberCellType nmbcell = new NumberCellType(); nmbcell.DecimalPlaces = 1; fpSpread.Sheets[0].Cells[5,0].CellType = ct; fpSpread.Sheets[0].Cells[5,0].Formula = "SUM(A1:A5)"; |
你可以自定义数字单元格的显示方式,就像这张属性表中总结的那样,显示为一个整数或者有若干格式化特定的小数。下面的示例给出了这些属性的使用方法。
属性 |
描述 |
在数字的显示中设置小数的位数。 |
|
获取或设置小数点分隔符。 |
|
对定点数的显示来说,在数字的小数部分设置是否将零显示为占位符。 |
|
获取或设置是否显示前导的零。 |
|
获取或设置用户可以输入的最大值。 |
|
MinimumValue |
获取或设置用户可以输入的最小值。 |
获取或设置负数的格式如何进行显示。 |
|
获取或设定负数是否显示为红色。 |
|
如果数字不符合显示的宽度,获取和设置替换数据的显示字符。 |
|
Separator |
获取或设置用于分割千以上的数值的字符。 |
ShowSeparator |
获取或设置是否显示千位分隔符。 |
下面的示例通过使用预先定义的格式化属性指派 NumberCellType 对象,对某个单元格设置成为具有某种格式的数字单元格。
FarPoint.Win.Spread.CellType.NumberCellType nmbrcell = new FarPoint.Win.Spread.CellType.NumberCellType(); nmbrcell.DecimalSeparator = ","; nmbrcell.DecimalPlaces = 5; nmbrcell.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.UseRegional; nmbrcell.MaximumValue = 500.000; nmbrcell.MinimumValue = -10.000; fpSpread1.ActiveSheet.Cells[1, 1].CellType = nmbrcell; |
数字单元格可以以分数格式显示数值,所以0.01可以显示为1/100。设置数字单元格的FractionMode属性以便以分数格式显示数值。你可以向一个单元格中键入0.01或者你可以键入1/100。两种情况都会显示为1/100。你可以使用FractionDenominatorPrecision枚举类型(例如要将分数显示为若干个四分之一,1/4等等)或者使用FractionDenominatorDigits属性设置分母的位数。下面这张表列出了所有与数字单元格相关的分数属性。
属性 |
描述 |
FractionMode |
设置是否将数值显示为分数。 |
当数值显示为分数时,设置是否将整数部分转化为分数。 |
|
使用自定义的格式设置数值如何显示。要使用自定义的格式,请设置FractionDenominatorPrecision以便于自定义。 |
|
当数据显示为分数时,设置数字的位数。 |
|
当数据显示为分数时,设置分数的精度。 |
|
FractionRenderOnly |
当数据显示为分数时,设置是否允许分数处于编辑模式。 |
FarPoint.Win.Spread.CellType.NumberCellType frac = new FarPoint.Win.Spread.CellType.NumberCellType(); frac.FractionMode = true; frac.FractionConvertWholeNumbers = false; frac.FractionDenominatorPrecision = FarPoint.Win.Spread.CellType.FractionDenominatorPrecision.Custom; frac.FractionDenominatorDigits = 3; fpSpread1.ActiveSheet.Columns[0].CellType = frac; fpSpread1.ActiveSheet.Columns[1].CellType = frac; fpSpread1.ActiveSheet.Cells[0, 0].Value = 5.01; |
另外一种设置分数显示的方法是(使用FractionCustomFormat属性)设置自定义格式设置一个数值。默认的值是“# ???/???”其中格式为一个整数(#)伴随着一个三位的分数 ( / )。 斜杠后面的问号决定了分母的数位(可以有一到十五位的精度,因为15位的精度是最大的)。自定义格式,你也可以 指定分母,比如“# ???/100”或者“# ??/64”。如果FractionConvertWholeNumber被设置为真,那么就不会显示为整数部分并且 整个数字显示为一个分数。
这个示例设置一个单元格以分数形式显示数据,值5.01的显示结果为5 1/100:
使用Spin按钮默认情况下,Spin按钮不显示,但是你可以在单元格处于编辑模式时在单元格内部显示Spin按钮。 你可以使用以单词“Spin”开头的NumberCellType的若干属性设置各种不同的Spin函数。
百分比单元格PercentCellType你可以使用一个百分比单元格以便将数据显示为百分数并且限制输入为百分数的值。默认情况下,在一个百分比单元格中,如果你在运行状态双击处于编辑模式下的单元格,就会弹出一个计算器。你可以指定显示在确定键和取消键上的文本信息。
下面的示例将一个单元格设置成为一个百分数单元格并且显示了一个简写(PRCNT)而不是百分号(%)。
FarPoint.Win.Spread.CellType.PercentCellType prctcell = new FarPoint.Win.Spread.CellType.PercentCellType(); prctcell.PercentSign = "PRCNT"; prctcell.PositiveFormat = FarPoint.Win.Spread.CellType.PercentPositiveFormat.PercentSignBeforeWithSpace; fpSpread1.ActiveSheet.Cells[1, 1].CellType = prctcell; |
默认情况下,Spin按钮不显示,但是当单元格处于编辑模式时,你可以使用单元格内部的Spin按钮。 你可以使用以单词“Spin”开头的PercentCellType的若干属性设置各种不同的微调函数。
日期时间单元格DateTimeCellType你可以设置一个单元格用于显示日期和时间,也可以指定要显示的日期和时间的格式。
在Windows环境中,默认值使用区域化的设置或者区域化的选项。你可以使用几种属性指定其格式。如果一个日期时间单元格显示的日期和时间使用长日期和时间格式,并且当前日期和时间是“10/29/2002 11:10:01”,文本属性返回“周二,十月,29日,2002年 11:10:01 上午”。值属性返回所述的日期时间的对象。
默认情况下,在日期时间单元格中,如果你在运行时双击处于编辑状态下的单元格,就会弹出一个日历(或者时钟)。你可以决定是否显示这些,并且你可以指定显示在确定和取消按钮上的文本。
下面的示例代码在第二行第二列的单元格中显示一个短格式的日期和时间:
FarPoint.Win.Spread.CellType.DateTimeCellType datecell = new FarPoint.Win.Spread.CellType.DateTimeCellType(); datecell.DateSeparator = " | "; datecell.TimeSeparator = "."; datecell.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.ShortDateWithTime; fpSpread1.ActiveSheet.Columns[1].Width = 175; fpSpread1.ActiveSheet.Cells[1, 1].CellType = datecell; fpSpread1.ActiveSheet.Cells[1, 1].Value = System.DateTime.Now; |
你可以使用货币单元格设置一个单元格用以显示货币的值。一个货币单元格显示了数字化的货币值,使用了一种你可以进行自定义的货币符号,分隔符等的格式,包括:
货币符号(并且决定是否显示)
分隔符(并且决定是否显示)
十进制符号
是否显示一个主导的零
正数指示器(并且决定是否显示它)
负数指示器(并且决定是否显示它)
默认情况下,在货币单元格中,如果你在运行时双击处于编辑状态的单元格,就会显示一个弹出的计算器。你可以决定是否允许他显示,并且你可以指定显示在“确定”和“取消”按钮上的文本信息。 你还可以设置可以输入的最小和最大值, 以便用户对其输入进行验证。
下面的示例代码设置了一个美元的货币单元格并设置了一定的格式:
FarPoint.Win.Spread.CellType.CurrencyCellType currcell = new FarPoint.Win.Spread.CellType.CurrencyCellType(); currcell.CurrencySymbol = "US$"; currcell.DecimalSeparator = ":"; currcell.DecimalPlaces = 8; fpSpread1.ActiveSheet.Cells[1,1].CellType = currcell; |
在默认情况下,Spin微调按钮是不显示的,但是你可以在单元格的边上显示微调按钮(此时单元格处于编辑模式)。你可以使用以字符Spin开头的CurrencyCellType属性设置不同的微调函数。
本文转自 powertoolsteam 51CTO博客,原文链接:http://blog.51cto.com/powertoolsteam/630959,如需转载请自行联系原作者