DioDocs for Excelでは、非表示セル範囲にクリップボードデータを貼り付けるかどうかを指定できます。オーバーロードされたCopyメソッドのパラメータを使用して、コピーしたデータを貼り付けるコピー先のセル、データを非表示のセル範囲に貼り付けるかどうか、およびさまざまな貼り付けオプションを指定できます。
CopyメソッドのpasteOptionパラメータは、PasteOptionクラスに所属します。このクラスのAllowPasteHiddenRange プロパティをtrueに設定すると、コピーしたデータを非表示のコピー先のセル範囲に貼り付けます。このプロパティをfalseに設定する場合は、非表示のセル範囲が無視されます。 このプロパティのデフォルト値はtrueです。
また、PasteOptionクラスは、さまざまな貼り付けオプションを指定できるPasteTypeプロパティも提供し、PasteType列挙値から値を受け入れます。
以下のテーブルに、PasteType列挙を使用して指定できるさまざまな貼り付けオプションを説明します。
オプション | 説明 |
---|---|
Default | 行の高さと列の幅を除き、コピー先のセル範囲にすべてのデータを貼り付けます。 |
Values | コピー先のセルにセル値のみを貼り付けます。 |
Formulas | 数式の場合は、コピー先のセルに数式を貼り付けます。 ただし、数式以外のセルでは、コピー先のセルにセル値を貼り付けられます。 |
Formats | 書式設定を貼り付けます。 |
NumberFormats | 数値形式を貼り付けます。 |
RowHeights | 行の高さを貼り付けます。 |
ColumnWidths | コピー先のセルに列幅を貼り付けます。 |
2つの異なる貼り付けオプションを組み合わせることもできます。 たとえば、ワークシートに値と数値形式を同時に貼り付ける場合は、次のいずれかの組み合わせを使用できます。
PasteType.Values | PasteType.NumberFormats
PasteType.Formulas | PasteType.NumberFormats
次のコードは、非表示のセル範囲にデータを貼り付ける方法と無視する方法を示します。データをコピーして貼り付けるときに、貼り付けのオプションの組み合わせを使用します。
C# |
コードのコピー
|
---|---|
var workbook = new Workbook(); IWorksheet worksheet = workbook.Worksheets[0]; object[,] data = new object[,]{ {"Richard", "New York", new DateTime(1968, 6, 8), "Blue", 67, 165}, {"Nia", "New York", new DateTime(1972, 7, 3), "Brown", 62, 134}, {"Jared", "New York", new DateTime(1964, 3, 2), "Hazel", 72, 180}, {"Natalie", "Washington", new DateTime(1972, 8, 8), "Blue", 66, 163}, {"Damon", "Washington", new DateTime(1986, 2, 2), "Hazel", 76, 176}, {"Angela", "Washington", new DateTime(1993, 2, 15), "Brown", 68, 145} }; worksheet.Range["A1:F6"].Value = data; worksheet.Range["A:F"].ColumnWidth = 15; worksheet.Range["1:1"].Hidden = true; worksheet.Range["3:3"].Hidden = true; worksheet.Range["5:5"].Hidden = true; //非表示のセル範囲にデータの貼り付けを無視します var worksheet2 = workbook.Worksheets.Add(); worksheet.Range["A1:F6"].Copy(worksheet2.Range["A1:F6"], new PasteOption { AllowPasteHiddenRange = false }); //非表示のセル範囲にデータを貼り付けます var worksheet3 = workbook.Worksheets.Add(); worksheet.Range["A1:F6"].Copy(worksheet3.Range["A1:F6"]); //非表示のセル範囲にデータの貼り付けを無視し、PasteTypeオプションを使用します var worksheet4 = workbook.Worksheets.Add(); worksheet.Range["A1:F6"].Copy(worksheet4.Range["A1:F6"], new PasteOption { AllowPasteHiddenRange = false, PasteType = PasteType.ColumnWidths | PasteType.Values }); //Excelファイルに保存します workbook.Save("IgnoreorPasteDataHiddenRange.xlsx"); |