前言欢迎来到第七章!前面六章,我们的表格已经能展示、美化、计算、交互,该有的功能基本都有了。但还有一个问题:数据是静态的。如果用户想在表格里动态增删行、排序、筛选、分组呢?如果用户想限制输入内容,防止乱填呢?今天我们就来解决这些问题。学完这一章,你的 Spread 表格将拥有完整的数据处理能力。一、行与列的增删改1.1 添加行和列csharpSheetView sheet = fpSpread1.Sheets[0]; // 在末尾添加一行 sheet.Rows.Add(sheet.RowCount, 1); // 在第3行之前插入一行 sheet.Rows.Add(2, 1); // 参数:索引, 数量 // 添加多行 sheet.Rows.Add(sheet.RowCount, 5); // 一次添加5行 // 添加列(类似用法) sheet.Columns.Add(sheet.ColumnCount, 1); // 末尾添加一列 sheet.Columns.Add(2, 1); // 在第3列前插入一列1.2 删除行和列csharp// 删除第5行 sheet.Rows.Remove(4, 1); // 删除第2-4行(共3行) sheet.Rows.Remove(1, 3); // 删除所有行(保留表头) sheet.Rows.Remove(0, sheet.RowCount); // 删除列 sheet.Columns.Remove(2, 1); // 删除第3列1.3 清空单元格内容(保留结构)csharp// 清空整个表格内容(不删除行列) sheet.ClearRange(0, 0, sheet.RowCount, sheet.ColumnCount, false); // 清空指定区域 sheet.ClearRange(1, 0, 10, 3, true); // 清空前10行前3列1.4 复制/移动行csharp// 复制第2行到第5行(覆盖) sheet.Rows.Copy(1, 4); // 源行索引, 目标行索引 // 移动第2行到第5行 sheet.Rows.Move(1, 4); // 复制整行并插入新位置 int sourceRow = 1; int targetRow = 5; sheet.Rows.Add(targetRow, 1); sheet.Rows.Copy(sourceRow, targetRow);二、排序(Sorting)2.1 单列排序(点击列头)最简单的方式:允许用户点击列头排序。csharp// 启用列头排序(允许点击列头排序) fpSpread1.Sheets[0].AllowColumnSort = true; // 设置排序指示器图标 fpSpread1.Sheets[0].SortIndicator = SortIndicatorType.DownArrow; // 更多排序选项 fpSpread1.Sheets[0].SortInfo = new FarPoint.Win.Spread.SortInfo[] { new FarPoint.Win.Spread.SortInfo(0, true) // 第0列升序 };2.2 代码排序csharp// 单列排序:对第2列升序排序 fpSpread1.Sheets[0].SortColumns(1, Sort.Ascending); // 多列排序:先按第0列升序,再按第2列降序 fpSpread1.Sheets[0].SortColumns(new int[] { 0, 2 }, new bool[] { true, false }); // 或使用 SortInfo fpSpread1.Sheets[0].Sort(0, 0, new SortInfo[] { new SortInfo(0, true), // 列0升序 new SortInfo(2, false) // 列2降序 });2.3 自定义排序csharp// 实现 IComparer 接口 public class CustomComparer : System.Collections.IComparer { public int Compare(object x, object y) { // 按照自定义逻辑比较 int val1 = Convert.ToInt32(x); int val2 = Convert.ToInt32(y); // 奇数优先 if (val1 % 2 != val2 % 2) return (val1 % 2 == 1) ? -1 : 1; return val1.CompareTo(val2); } } // 使用自定义比较器排序 fpSpread1.Sheets[0].SortColumns(0, true, new CustomCompar