クリップボード制御
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 が自動的にクリップボード操作を行います。操作を禁止したい場合、BeforeCopy
、BeforePaste
、BeforeCut
イベントを処理して、イベントの引数オブジェクトの 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
セルとの間はタブで切り分け、行の間は改行で切り分けます。テーブル構造を表しますが通常の文字列であるため、メモ帳などのテキスト処理ソフトでも貼り付けることが可能です。
平文のテーブル文字列を処理してから ReoGrid に貼り付ける
デフォルトの場合、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
にあります。