内置剪贴板支持
- 在 ReoGrid 和其他电子表格应用程序之间复制制表符分隔的纯文本
- 在两个 ReoGrid 工作表之间复制工作表内容,包括数据、样式和边框
制表符分隔纯文本
制表符分隔纯文本是电子表格应用程序之间传输数据的通用格式。Excel 使用此格式将数据以纯文本形式放入剪贴板:
A1 \\t B1 \\t C1 \\n
A2 \\t B2 \\t C2 \\n
A3 \\t B3 \\t C3 \\n
从 Excel 复制数据到记事本。

从剪贴板获取制表符分隔的纯文本:
string text = Clipboard.GetText();
ReoGrid 提供了一个方法来帮助将制表符分隔格式解析为对象数组:
object[,] data = RGUtility.ParseTabbedString(text);
然后将此对象数组设置到工作表上:
worksheet.SetRangeData(sheet.SelectionRange, data);
将范围数据转换为制表符字符串
使用工作表的 StringifyRange 方法将选中的范围转换为制表符分隔的字符串。
string tabbedStr = worksheet.StringifyRange(worksheet.SelectionRange);
手动从制表符字符串粘贴
使用 PasteFromString 方法将剪贴板中的制表符分隔字符串粘贴到工作表上。返回值 appliedRange 是实际受影响的范围。
var appliedRange = worksheet.PasteFromString(new CellPosition("A1"), Clipboard.GetText());
阻止内置剪贴板操作
工作表在收到用户的 Ctrl+C、Ctrl+V 或 Ctrl+X 时会自动处理剪贴板操作。要阻止内置操作,请处理剪贴板事件并将 IsCancelled 设置为 true。
剪贴板操作期间的事件:
- BeforeCopy
- AfterCopy
- BeforePaste
- AfterPaste
- BeforeCut
- AfterCut
所有以 Before 为前缀的事件都有 IsCancelled 属性,可以阻止默认的剪贴板操作。例如:
worksheet.BeforePaste += (s, e) => e.IsCancelled = true;
调用剪贴板方法
检查是否可以执行剪贴板操作的方法:
| 方法 | 描述 |
|---|---|
| bool CanCopy() | 检查内容是否可以复制到剪贴板 |
| bool CanPaste() | 检查剪贴板中的内容是否可以粘贴到工作表(剪贴板中存在可识别的数据) |
| bool CanCut() | 检查内容是否可以剪切并放入剪贴板 |
执行剪贴板操作的方法:
bool Copy();
bool Paste();
bool Cut();
例如:
worksheet.Copy();
手动复制和粘贴范围
使用 GetPartialGrid 方法获取范围的内容,使用 SetPartialGrid 方法将该内容复制到指定范围。
var content = worksheet.GetPartialGrid("A1:B2");
worksheet.SetPartialGrid("C1:D2", content);