本页列出了 ReoGrid 中所有可用的内置操作类。操作为工作表操作提供撤销/重做支持。
命名空间
using unvell.ReoGrid.Actions;
使用操作
// 执行操作
sheet.DoAction(new SetCellDataAction("B2", "Hello"));
// 撤销 / 重做
grid.Undo();
grid.Redo();
有关创建自定义操作和监控执行的详细信息,请参阅操作框架。
由内置 UI 触发的操作
| 用户操作 | 操作 | 说明 |
|---|
| 完成编辑单元格 | SetCellDataAction | 存储新的单元格值 |
| 按 Delete 键清除选择 | RemoveRangeDataAction | 移除选择区域中的数据 |
| 粘贴 ReoGrid 富内容 | SetPartialGridAction | 粘贴带有样式、边框、合并的数据 |
| 粘贴纯文本 | SetRangeDataAction | 将制表符分隔的文本粘贴为二维数组 |
| 拖动选择区域到新位置 | MoveRangeAction | 移动选定的范围 |
| Ctrl + 拖动选择区域 | CopyRangeAction | 复制选定的范围 |
| 拖动填充手柄 | AutoFillSerialAction | 从选择区域自动填充数据 |
| 拖动行标题分隔线 | SetRowsHeightAction | 记录新的行高 |
| 拖动列标题分隔线 | SetColumnsWidthAction | 记录新的列宽 |
| 双击列分隔线 | AutoFitColumnsWidthAction | 自动调整列宽以适应内容 |
| 样式刷复制 | SetRangeStyleAction / SetRangeDataFormatAction | 应用样式和格式 |
所有操作类
单元格数据操作
| 操作 | 构造函数 | 说明 |
|---|
SetCellDataAction | (string address, object data) | 设置单个单元格的数据 |
| (CellPosition pos, object data) | |
| (int row, int col, object data) | |
SetRangeDataAction | (RangePosition range, object[,] data) | 从二维数组设置范围数据 |
RemoveRangeDataAction | (RangePosition range) | 移除范围中的数据 |
SetPartialGridAction | (RangePosition range, PartialGrid data, PartialGridCopyFlag flags) | 设置部分网格(数据 + 样式 + 边框) |
范围移动/复制操作
| 操作 | 构造函数 | 说明 |
|---|
MoveRangeAction | (RangePosition fromRange, CellPosition toPosition) | 将范围移动到新位置 |
CopyRangeAction | (RangePosition fromRange, CellPosition toPosition) | 将范围复制到新位置 |
AutoFillSerialAction | (RangePosition sourceRange, RangePosition targetRange) | 从源范围自动填充到目标范围 |
行和列操作
| 操作 | 构造函数 | 说明 |
|---|
InsertRowsAction | (int row, int count) | 在指定行之前插入行 |
RemoveRowsAction | (int row, int count) | 从指定行开始删除行 |
InsertColumnsAction | (int column, int count) | 在指定列之前插入列 |
RemoveColumnsAction | (int column, int count) | 从指定列开始删除列 |
SetRowsHeightAction | (int row, int count, ushort height) | 设置一组行的高度 |
SetColumnsWidthAction | (int col, int count, ushort width) | 设置一组列的宽度 |
AutoFitColumnsWidthAction | (int col, int count, int padding = 0) | 自动调整列宽以适应内容 |
可见性操作
| 操作 | 构造函数 | 说明 |
|---|
HideRowsAction | (int row, int count) | 隐藏行 |
UnhideRowsAction | (int row, int count) | 显示隐藏的行 |
HideColumnsAction | (int col, int count) | 隐藏列 |
UnhideColumnsAction | (int col, int count) | 显示隐藏的列 |
合并操作
| 操作 | 构造函数 | 说明 |
|---|
MergeRangeAction | (RangePosition range) | 将范围合并为单个单元格 |
UnmergeRangeAction | (RangePosition range) | 取消合并已合并的范围 |
样式和格式操作
| 操作 | 构造函数 | 说明 |
|---|
SetRangeStyleAction | (RangePosition range, WorksheetRangeStyle style) | 对范围应用样式 |
| (string address, WorksheetRangeStyle style) | |
| (int row, int col, int rows, int cols, WorksheetRangeStyle style) | |
RemoveRangeStyleAction | (RangePosition range, PlainStyleFlag flag) | 从范围移除特定样式 |
SetRangeBorderAction | (RangePosition range, BorderPositions pos, RangeBorderStyle style) | 在范围上设置边框 |
RemoveRangeBorderAction | (RangePosition range, BorderPositions pos) | 从范围移除边框 |
SetRangeDataFormatAction | (RangePosition range, CellDataFormatFlag format, object args) | 设置范围的数据格式 |
StepRangeFontSizeAction | (RangePosition range, bool enlarge) | 增大或减小字号 |
大纲操作
| 操作 | 构造函数 | 说明 |
|---|
AddOutlineAction | (RowOrColumn rowOrColumn, int start, int count) | 添加行/列大纲 |
RemoveOutlineAction | (RowOrColumn rowOrColumn, int start, int count) | 移除行/列大纲 |
ClearOutlineAction | (RowOrColumn rowOrColumn) | 清除所有大纲 |
CollapseOutlineAction | (RowOrColumn rowOrColumn, int start, int count) | 折叠大纲 |
ExpandOutlineAction | (RowOrColumn rowOrColumn, int start, int count) | 展开大纲 |
筛选操作
| 操作 | 构造函数 | 说明 |
|---|
CreateAutoFilterAction | (RangePosition range) | 创建列自动筛选 |
工作簿操作
| 操作 | 构造函数 | 说明 |
|---|
InsertWorksheetAction | (int index, Worksheet worksheet) | 在指定索引处插入工作表 |
RemoveWorksheetAction | (int index, Worksheet worksheet) | 移除指定索引处的工作表 |
操作组
| 操作 | 构造函数 | 说明 |
|---|
WorksheetActionGroup | () | 将多个操作分组为一个撤销项 |
WorksheetReusableActionGroup | (RangePosition range) | 可重复的范围操作组 |
示例
设置单元格数据
sheet.DoAction(new SetCellDataAction("B2", "Hello"));
粘贴二维数组
var data = new object[,] { { 1, 2 }, { 3, 4 } };
sheet.DoAction(new SetRangeDataAction(new RangePosition("C3:D4"), data));
插入行
sheet.DoAction(new InsertRowsAction(5, 2)); // 在第 5 行之前插入 2 行
应用样式
sheet.DoAction(new SetRangeStyleAction("A1:C3", new WorksheetRangeStyle
{
Flag = PlainStyleFlag.BackColor | PlainStyleFlag.Bold,
BackColor = Color.LightYellow,
Bold = true,
}));
应用边框
sheet.DoAction(new SetRangeBorderAction(
sheet.SelectionRange,
BorderPositions.Outside,
new RangeBorderStyle { Color = Colors.Black, Style = BorderLineStyle.Solid }));
分组操作
var group = new WorksheetActionGroup();
group.Actions.Add(new SetCellDataAction(0, 0, "Key"));
group.Actions.Add(new SetCellDataAction(0, 1, "Value"));
group.Actions.Add(new SetCellDataAction(0, 2, "Description"));
grid.DoAction(sheet, group); // 一个撤销项
移动范围
sheet.DoAction(new MoveRangeAction(
sheet.SelectionRange,
new CellPosition(10, 2)));
相关主题