Spread for Windows Forms高级主题(5)---数据处理

使用表单的API处理数据

你可以将数据以有格式或无格式字符串或者数据对象的形式填充到单元格中。将数据填充到单元格的最好方式取决于你想添加字符串数据还是数据对象,以及你想添加数据到单一的单元格还是某个范围内的所有单元格。

举例来说,如果你使用的数据来自用户的文本框中,你可能想要添加由Spread控件解析的字符串数据。如果你想要添加多个值,并想要直接将它们添加到数据模型中,可以以对象的方式添加它们。

下表汇总了在表单级别添加数据的方法。


数据描述


单元格数目


方法名


具有格式的字符串(例如"$1,234.56")


单个单元格


GetText

SetText

 
单元格区域


GetClip

SetClip


没有格式的字符串(例如"1234.45")


单个单元格


GetValue

SetValue

 
单元格区域


GetClipValue

SetClipValue


具有格式的数据对象


单元格区域


GetArray

SetArray

当你使用带格式的数据时,为单元格设置格式的单元格类型解析数据,并将数据存放在数据模型中。当你使用不带格式的数据时,数据则直接保存在数据模型中。如果你要把数据添加到直接保存在数据模型的表单中,你可能需要解析这些数据,因为控件没有进行解析。

为了向控件中添加大量的数据,可以考虑创建和打开现有的文件,如文本文件或Excel格式的文件。你也可以通过保存数据并格式化为一个文本文件,Excel格式文件,或Spread XML文件来恢复数据。

下面的示例代码将带格式的数据添加到一个单元格区域中:

// 添加数据到A1至C3单元格.

fpSpread1.Sheets[0].SetClip(0, 0, 3, 3,"Sunday\tMonday\tTuesday\r\nWednesday\tThursday\tFriday\r\nSaturday\tSunday\tMonday");

 

填充区域单元格的值

你可以复制一个单元格区域,并用该单元格区域填充另一个区域内的单元格,可以复制数据及单元格类型等。例如,如果现有一个2行2列的单元格区域,你可以重复向下垂直填充5组2行2列的单元格区域。

使用FillRange方法。该方法使用的参数有:

  • 开始单元格的行索引和列索引
  • 要复制区域的行数和列数
  • 将选定区域复制到的行数(当向左或右时)或列数(当向上或下时)(不是复制操作的重复次数;而是行或列的数目)。

例如,使用下面的代码,你可以实现上图所示的结果。

// 定义需要反复填充区域的Text属性.

fpSpread1.ActiveSheet.Cells[0, 0].Text = "A1-text";

fpSpread1.ActiveSheet.Cells[0, 1].Text = "A2-text";

fpSpread1.ActiveSheet.Cells[1, 0].Text = "B1-text";

fpSpread1.ActiveSheet.Cells[1, 1].Text = "B2-text";

fpSpread1.ActiveSheet.Cells[0, 0].BackColor = Color.Cyan;

fpSpread1.ActiveSheet.Cells[0, 0].ForeColor = Color.DarkBlue;

fpSpread1.ActiveSheet.Cells[0, 1].BackColor = Color.Coral;

fpSpread1.ActiveSheet.Cells[0, 1].ForeColor = Color.DarkRed;

// 用两行一列的内容填充右边的3列区域

fpSpread1.ActiveSheet.FillRange(0, 1, 2, 1, 3, FillDirection.Right);

// 用两行两列的内容填充下边的4行区域

fpSpread1.ActiveSheet.FillRange(0, 0, 2, 2, 4, FillDirection.Down);

复制表单的数据

你可以使用表单的Copy方法从单元格复制数据,并粘贴到其他单元格。

当你将数据复制到一个单元格(或一个单元格区域)时,数据会替代目标单元格(单元格区域)中的数据。如果该操作复制了一个单元格区域,并将其粘贴到一个位置重叠的区域,那么所有你要粘贴的单元格的值都会被复制的单元格的值所替代。

你可以指定当单元格或单元格区域被复制时,其中的公式是否自动更新。

移动表单中的数据

你可以使用表单的Move方法 将一个单元格或一个单元格区域的数据移动到另一个单元格或另一个单元格区域。

当你把数据从一个单元格(或一个单元格区域)移动到另一个单元格时(或单元格区域),原单元格(或单元格区域)中的数据就会替代目标单元格(或单元格区域)中的数据。如果该操作移动了一个单元格区域,并将其移动到一个位置重叠的区域,那么所有你要移动的单元格的值都会被移动的单元格的值所替代。

当单元格或单元格区域被移动时,你可以指定其中的公式是否自动更新。

为了将表单的3行数据向上移动,并将5行数据向下移动,你可能需要在目标位置处插入空行。为了将3行向上移动,5行向下移动,首先临时复制五行数据,然后将3行数据向上移动到它们的目标位置,然后再将复制的五行分配到正确的位置。

下面的代码完成上述操作:

FarPoint.Win.Spread.Model.DefaultSheetDataModel dm = new DefaultSheetDataModel(5, this.fpSpread1.Sheets[0].Models.Data.ColumnCount);

dm.SetArray(0, 0, (this.fpSpread1.Sheets[0].Models.Data as FarPoint.Win.Spread.Model.DefaultSheetDataModel).GetArray(0, 0, 5, 5));

dm.RemoveRows(0, 5);

dm.AddRows(0, 3);

dm.Move(this.fpSpread1.Sheets[0].Models.Data.RowCount - 4, 0, 0, 0, 3, this.fpSpread1.Sheets[0].Models.Data.ColumnCount);

dm.RemoveRows(this.fpSpread1.Sheets[0].Models.Data.RowCount -4, 3);

dm.AddRows(this.fpSpread1.Sheets[0].Models.Data.RowCount, 5);

dm.SetArray(this.fpSpread1.Sheets[0].Models.Data.RowCount - 6, 0, dm.GetArray(0, 0, 5, this.fpSpread1.Sheets[0].Models.Data.ColumnCount));

交换表单中的数据

你可以交换两个单元格或两个单元格区域的内容。

当你交换两个单元格或两个单元格区域的数据时,单元格的设置也会随着数据一起交换。如果你所做的设置是针对包含单元格的整个列或行或整个表单,而不是针对单元格自身所做的设置,那么这些设置不会被交换。例如,如果你将源单元格的背景色设置为红色,那么背景色能够被交换过去,目标单元格的背景色就变成了红色。然而,如果你将包含源单元格的列的背景色设置为红色,那么该设置不会被交换。

当你把数据从一个单元格交换到另外一个时,那么一个单元格中的数据就会变成另外一个单元格的数据,反之亦然。例如,如果单元格A1包含值4,单元格B3包含值6,那么当你交换这两个单元格时,A1单元格的值就会变成6,B3单元格的值会变成4。

如果你尝试将目标区域与一个比它的可用区域大的区域进行交换时,交换操作不会执行。例如,如果你想交换一个含4个单元格的区域,而指定目标区域为表单边界的一个单元格时,那么交换操作不会发生。

如果交换操作要交换有重叠区域的单元格,那么独立的单元格从重叠区域的转角处开始交换。

这里是一个交换单元格区域的代码示例:

fpSpread1.ActiveSheet.RowCount = 10; 

fpSpread1.ActiveSheet.ColumnCount = 10; 

private void button1_Click(object sender, System.EventArgs e) 

{

fpSpread1.ActiveSheet.SwapRange(0, 0, 3, 0, 3, 3, true); 

} 

删除表单中的数据

你可以删除所选的单个单元格或多个单元格或一个单元格区域中的数据以及单元格格式,或只删除数据,保留单元格的格式。想了解更多有关单元格格式的信息,请参考理解单元格类型如何显示数据。你可以使用任意一个清除方法或使用剪贴板的剪切数据操作来删除数据。

你可以使用默认数据模型中任意一个清除方法来删除数据:

  • Clear方法,删除数据和公式。
  • ClearFormulas方法,只删除公式。
  • ClearData方法,只删除数据。
  • ClearCustomNames方法,清除自定义名称;以及ClearCustomFunctions方法,清除自定义函数。
  • ClearRange方法,清除单元格区域中的数据,公式,注释以及格式。

如果你使用ClearRange方法,并将dataOnly参数设置为true,该方法会清除公式,单元格注释,以及该区域单元格中的文本; 换句话说,它会清除数据模型中与这些单元格相关的所有信息。

你可以使用range接口中的IRangeSupport.Clear方法来删除一个单元格区域的内容。

 

Spread for Windows Forms 5.0 中文版下载地址

附:Spread for Windows Forms高级主题系列文章

Spread for Windows Forms高级主题(1)---底层模型

Spread for Windows Forms高级主题(2)---理解单元格类型

Spread for Windows Forms高级主题(3)---理解单元格的编辑模式

Spread for Windows Forms高级主题(4)---自定义用户交互

 

相关阅读:

Spread for Windows Forms 7新功能使用指南

Spread Studio 10.0v1 发布

SpreadJS 10.0v1 发布

 

时间: 2024-10-26 10:06:14

Spread for Windows Forms高级主题(5)---数据处理的相关文章

Spread for Windows Forms高级主题(6)---数据绑定管理

自定义列和区域的数据绑定 当表单被绑定到一个数据集时,表单中的列就会相继的被分配到数据集的区域上.例如,第一个数据域分配给列A,第二个数据区域分配给列B,等等.你也可以改变分配顺序,将任意域分配给任意列. 默认情况下,绑定的表单继承数据库中列的宽度.如果你想要设置你自己的列宽,你可以在绑定Spread控件之后设置列宽,或者将DataAutoSizeColumns属性设置为false并设置列宽. 如果你将多个Spread控件绑定到了一个单一的数据集,你可以将每一个Spread控件中表单的AutoG

Spread for Windows Forms高级主题(8)---通过暂停布局提高性能

一种改善控件性能的方法是,当需要对许多单元格进行变动时,可以先保持或挂起重画,直到所有的变动都完成时再进行.通过在对单元格修改和重算时保持重画(挂起布局),然后再恢复布局并重画所有单元格控件能够节省很多时间,并且仍然能为用户展现一个全新的界面. 布局对象 布局是一个对象,它保存了计算后的值(像单元格的宽度和高度,合并,以及视图),用来绘制控件的当前状态.这些值可能包括到底有多少视图,每一个视图左上方的单元格是什么,每一行及每一列有多大以及每一个视图有多少单元格是当前可见的,等等.使用布局对象的目

Spread for Windows Forms高级主题(4)---自定义用户交互

你可以从多方面自定义用户界面来自定义用户与Spread控件的交互方式.同时,你还可以自定义如何处理用户交互方式. 设置允许用户进行的操作 下面的列表总结了通过控件的数据区域,你可以授权用户进行的操作(或者限制用户进行的操作). 允许的用户功能 相关属性或方法 拖拽单元格数据 FpSpread.AllowDragDrop 属性 拖拽并填写单元格数据 FpSpread.AllowDragFill 属性 编辑单元格备注 SheetView.AllowNoteEdit 属性 输入公式 FpSpread.

Spread for Windows Forms高级主题(3)---单元格的编辑模式

理解单元格的编辑模式 通常情况下,当终端用户双击单元格时,编辑控件将允许用户在该单元格中输入内容.在一个单元格中编辑的能力被称为编辑模式.一些属性和方法可以用来自定义编辑模式的使用. 当一个单元格处于编辑模式时,活动单元格将显示一个I型光标,如下图所示.当该单元格不处于编辑模式时,活动单元格将显示一个焦点长方形,如下图所示. 处于编辑模式下的单元格 被选中但是并不处于编辑模式下的单元格 一个单元格将进入编辑模式(开启编辑模式),当: 用户在单元格中输入内容 用户双击单元格 EditMode属性设

Spread for Windows Forms高级主题(1)---底层模型

底层模型概述 Spread控件提供了很多模型,这些模型提供了自定义控件的基础架构.同时,这些模型作为底层模板,派生出了更多通用的快捷对象. 在不使用Spread的底层模型的情况下,你可以完成许多任务.通过使用Spread设计器或者快捷对象(如单元格.列和行)的属性,你可以在表单上实现许多改变.但是因为表单模型是所有快捷对象的基础,因此在通常情况下,使用表单模型要比使用快捷对象的速度要快.例如,在代码中使用快捷对象设置一个属性值: fpSpread1.Sheets[0].Cells[0, 0].V

Spread for Windows Forms快速入门(14)---文件操作

你可以将数据从Spread中存到几种不同类型的文件中或者可以在Spread中打开几种不同类型的数据文件.通过使用相应的代码,你可以将整个控件,某个特定的表单,或者某个特定单元格区域中的数据保存为几种不同的文件类型或者流.类似的,你可以允许用户对某几种文件类型进行文件操作. 保存到Excel文件 你可以使用ExcelSaveFlags枚举类型的UseOOXMLFormat选项,将数据保存到Excel格式文件(BIFF8 格式)或者Excel 2007 XML 格式(xlsx).默认的,当你保存为E

Spread for Windows Forms快速入门(5)---常用的单元格类型(下)

在上一篇,我们介绍了常用了文本类型单元格.除了文本型单元格外,Spread还支持如下13种图形单元格类型:组合框单元格.按钮单元格.复选框单元格.超链接单元格.进度条单元格.条码单元格.颜色选择器单元格.图片单元.列表框单元格.复合列组合框单元格.复合选项单元格.富文本单元格.滚动条单元格等.下面我们介绍前五种的基本用法. 组合框单元格ComboBoxCellType 你可以使用一个组合框单元格以显示一个可编辑的下拉列表,用户通过在显示的列表中进行选择完成对值的输入.你可以指定项目的列表是否包括

Spread for Windows Forms 7新功能使用指南

表格控件 Spread for WinForms 表格控件兼容Excel的强大功能,并将其嵌入到您的应用系统中.完备的Excel文档支持使得您可以在企业中分享和访问数据信息:内嵌的图表引擎和数据可视化支持让您更加轻松的为商务.工程以及科学应用系统中创建丰富高效的信息中心. 表格控件 Spread for WinForms 7 在此次发布的版本中对过滤功能做了增强.增强过滤功能提供了种类繁多的过滤条件,包括数值.日期.文本和颜色的自动过滤.您可以创建三种类型的过滤器:数据列表.格式或标准.这些过滤

Spread for Windows Forms快速入门(2)---设置Spread表单

让我们从设置Spread的大小和表单的外观开始学习如何定制Spread,这些操作通常放在Form的构造函数中进行,在InitializeComponent()之后调用.   自定义控件的大小 你可以设置Spread控件的规格,这决定了表单中可见的区域的大小.下面的图片中展示了你可以设置的规格,通过设置每一个规格中像素的数量进行设置.   计算Spread控件的高度时,假设滚动条是关闭状态,没有标题,计算所有行的高度以及每一个边界按1个像素计算,所以,如果现在有10行,每行20像素高度,总的高度为