クリップボード制御

ReoGrid では以下のクリップボード操作をサポートしています。

  • ReoGridとReoGrid : スタイル、罫線、セルボディなどを含む全てのセルデータのコピーまたは貼り付け
  • ReoGrid と他のスプレッドシート間: 平文のテーブルデータのコピーまたは貼り付け
  • ReoGrid と他の任意のアプリケーション間: 平文の文字列のコピーまたは貼り付け
  • ReoGrid から他の画像処理ソフトへ: 選択した表示中のセルを画像として出力

クリップボード操作を呼び出す

ReoGrid のワークシートではクリップボード操作のメソッドを用意しています。以下のメソッドはクリップボード操作の前に確認するためのメソッドです。

メソッド 説明
bool CanCopy() 現在のワークシートからデータをコピーすることができるかを確認
bool CanPaste() 現在クリップボードにあるデータをワークシートに貼り付けることができるかを確認
bool CanCut() 現在のワークシートからデータを切り取ってコピーすることができるかを確認

以下のメソッドはクリップボード操作のメソッドです。

メソッド 説明
bool Copy() ワークシートの内容をクリップボードにコピーする
bool Paste() クリップボードの内容をワークシートに貼り付ける
bool Cut() ワークシートの内容を切り取ってクリップボードにコピーする

呼び出す例は以下の通りです。

worksheet.Copy();

クリップボード操作のイベント

クリップボード操作が行われた場合以下のイベントが発生します。

操作 イベント 説明
コピー BeforeCopy コピー操作が行われる前
AfterCopy コピー操作が行われた後
貼り付ける BeforePaste 貼り付ける操作が行われる前
AfterPaste 貼り付ける操作が行われた後
切り取ってコピー BeforeCut 切り取ってコピーする操作が行われる前
AfterCut 切り取ってコピーする操作が行われた後

デフォルトのクリップボード操作を禁止する

デフォルトでは、Ctrl+C、Ctrl+V、Ctrl+X が押された場合 ReoGrid が自動的にクリップボード操作を行います。操作を禁止したい場合、BeforeCopyBeforePasteBeforeCut イベントを処理して、イベントの引数オブジェクトの IsCancelled プロパティを true に設定します。

  • BeforeCopy
  • BeforePaste
  • BeforeCut

ソースコード例は以下の通りです。

worksheet.BeforePaste += (s, e) => { e.IsCancelled = true; };

平文のテーブル文字列

平文のテーブル文字列フォーマットはタブと改行で切り分けたテーブル構造を表す文字列で、仕様が異なる二つのスプレッドシート製品の間でデータを交換するためのフォーマットです。フォーマットのサンプルは以下の通りです。

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

セルとの間はタブで切り分け、行の間は改行で切り分けます。テーブル構造を表しますが通常の文字列であるため、メモ帳などのテキスト処理ソフトでも貼り付けることが可能です。

Clipboard

平文のテーブル文字列を処理してから ReoGrid に貼り付ける

tips デフォルトの場合、ReoGrid は自動的にクリップボードから平文のテーブル文字列を取得して貼り付けます。平文のテーブル文字列をカスタマイズ処理したい場合、以下のソースコードをご参照ください。

クリップボードから文字列を取得します。

string text = Clipboard.GetText();

ReoGrid では平文のテーブルデータをオブジェクト配列に変換する便利なメソッドを用意しています。

object[,] data = RGUtility.ParseTabbedString(text);

オブジェクト配列の内容を処理してから、SetRangeData メソッドを利用してデータをワークシートに設定します。

worksheet.SetRangeData(sheet.SelectionRange, data);

ReoGrid から平文のテーブル文字列を作成する

ワークシートのメソッド StringifyRange を利用すると指定した範囲から平文のテーブル文字列を作成することができます。

string tabbedStr = worksheet.StringifyRange(worksheet.SelectionRange);

指定した平文のテーブル文字列から貼り付ける

ワークシートのメソッド PasteFromString を利用すると、指定した平文のテーブル文字列をワークシートに貼り付けることができます。また、平文のテーブル文字列を解析し、貼り付けられた範囲が返されます。

var appliedRange = worksheet.PasteFromString(new CellPosition("A1"), Clipboard.GetText());

デモプログラム

デモプログラムはデモプロジェクトにあります。ソースコードは \worksheet\ClipboardEventDemo.cs にあります。