内置剪贴板支持

  • 在 ReoGrid 和其他电子表格应用程序之间复制制表符分隔的纯文本
  • 在两个 ReoGrid 工作表之间复制工作表内容,包括数据、样式和边框

制表符分隔纯文本

制表符分隔纯文本是电子表格应用程序之间传输数据的通用格式。Excel 使用此格式将数据以纯文本形式放入剪贴板:

A1 \\t B1 \\t C1 \\n
A2 \\t B2 \\t C2 \\n
A3 \\t B3 \\t C3 \\n

从 Excel 复制数据到记事本。

Clipboard

从剪贴板获取制表符分隔的纯文本:

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);
这篇文章对您有帮助吗?