本页列出了 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)));

相关主题

这篇文章对您有帮助吗?