作成日: 2019/07/25 最終更新日: 2022/04/05
文書種別
使用方法
詳細
Label型に相当する専用のセル型はSPREADには備えられておりませんが、TextCellType型セルのStaticプロパティをTrueに設定することで、Label型に相当する動作にできます。
しかしながら、ClearRangeメソッドでは、セル型を判別する機能はないので、編集が禁止されたセル型でも値や属性がクリアされてしまいます。
特定のセル型を除いたクリア処理を行うには、独自に実装する必要があります。
以下にサンプルコードを紹介します。
◎サンプルコード(VB)
◎サンプルコード(C#)
しかしながら、ClearRangeメソッドでは、セル型を判別する機能はないので、編集が禁止されたセル型でも値や属性がクリアされてしまいます。
特定のセル型を除いたクリア処理を行うには、独自に実装する必要があります。
以下にサンプルコードを紹介します。
◎サンプルコード(VB)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' セル型の設定
Dim textCell As New FarPoint.Win.Spread.CellType.TextCellType()
textCell.Static = True ' 編集の禁止
FpSpread1.ActiveSheet.Columns(1).CellType = textCell
FpSpread1.ActiveSheet.Columns(1).BackColor = Color.LavenderBlush
' 値の設定
For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
For j As Integer = 0 To FpSpread1.ActiveSheet.ColumnCount - 1
FpSpread1.ActiveSheet.SetValue(i, j, String.Format("R{0}C{1}", i, j))
Next
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' 選択範囲の値のクリア
Dim range As FarPoint.Win.Spread.Model.CellRange = FpSpread1.ActiveSheet.GetSelection(0)
CustomClear(FpSpread1.ActiveSheet, range, True)
End Sub
Private Sub CustomClear(sheet As FarPoint.Win.Spread.SheetView, range As FarPoint.Win.Spread.Model.CellRange, dataOnly As Boolean)
' Static = Trueのテキスト型セルを除いたクリア処理
For i As Integer = range.Row To range.Row + range.RowCount - 1
For j As Integer = range.Column To range.ColumnCount - 1
If sheet.GetCellType(i, j) Is Nothing Then
sheet.ClearRange(i, j, 1, 1, dataOnly) 'フラットセルのデータを削除
ElseIf Not (sheet.GetCellType(i, j).GetType() = GetType(FarPoint.Win.Spread.CellType.TextCellType) AndAlso DirectCast(sheet.GetCellType(i, j), FarPoint.Win.Spread.CellType.TextCellType).Static) Then
sheet.ClearRange(i, j, 1, 1, dataOnly) '標準型セルなどのデータを削除
End If
Next
Next
End Sub
' セル型の設定
Dim textCell As New FarPoint.Win.Spread.CellType.TextCellType()
textCell.Static = True ' 編集の禁止
FpSpread1.ActiveSheet.Columns(1).CellType = textCell
FpSpread1.ActiveSheet.Columns(1).BackColor = Color.LavenderBlush
' 値の設定
For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
For j As Integer = 0 To FpSpread1.ActiveSheet.ColumnCount - 1
FpSpread1.ActiveSheet.SetValue(i, j, String.Format("R{0}C{1}", i, j))
Next
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' 選択範囲の値のクリア
Dim range As FarPoint.Win.Spread.Model.CellRange = FpSpread1.ActiveSheet.GetSelection(0)
CustomClear(FpSpread1.ActiveSheet, range, True)
End Sub
Private Sub CustomClear(sheet As FarPoint.Win.Spread.SheetView, range As FarPoint.Win.Spread.Model.CellRange, dataOnly As Boolean)
' Static = Trueのテキスト型セルを除いたクリア処理
For i As Integer = range.Row To range.Row + range.RowCount - 1
For j As Integer = range.Column To range.ColumnCount - 1
If sheet.GetCellType(i, j) Is Nothing Then
sheet.ClearRange(i, j, 1, 1, dataOnly) 'フラットセルのデータを削除
ElseIf Not (sheet.GetCellType(i, j).GetType() = GetType(FarPoint.Win.Spread.CellType.TextCellType) AndAlso DirectCast(sheet.GetCellType(i, j), FarPoint.Win.Spread.CellType.TextCellType).Static) Then
sheet.ClearRange(i, j, 1, 1, dataOnly) '標準型セルなどのデータを削除
End If
Next
Next
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
// セル型の設定
FarPoint.Win.Spread.CellType.TextCellType textCell = new FarPoint.Win.Spread.CellType.TextCellType();
textCell.Static = true; // 編集の禁止
fpSpread1.ActiveSheet.Columns[1].CellType = textCell;
fpSpread1.ActiveSheet.Columns[1].BackColor = Color.LavenderBlush;
// 値の設定
for(int i = 0; i < fpSpread1.ActiveSheet.RowCount; i++)
{
for(int j = 0; j < fpSpread1.ActiveSheet.ColumnCount; j++)
{
fpSpread1.ActiveSheet.SetValue(i, j, string.Format("R{0}C{1}", i, j));
}
}
}
private void button1_Click(object sender, EventArgs e)
{
// 選択範囲の値のクリア
FarPoint.Win.Spread.Model.CellRange range = fpSpread1.ActiveSheet.GetSelection(0);
CustomClear(fpSpread1.ActiveSheet, range, true);
}
private void CustomClear(FarPoint.Win.Spread.SheetView sheet, FarPoint.Win.Spread.Model.CellRange range, Boolean dataOnly )
{
// Static = Trueのテキスト型セルを除いたクリア処理
for(int i = range.Row;i< range.Row + range.RowCount; i++)
{
for(int j = range.Column;j< range.ColumnCount; j++)
{
if(!(sheet.GetCellType(i, j).GetType()== typeof(FarPoint.Win.Spread.CellType.TextCellType)&& ((FarPoint.Win.Spread.CellType.TextCellType)sheet.GetCellType(i, j)).Static)){
sheet.ClearRange(i, j, 1, 1, dataOnly);
}
}
}
}
{
// セル型の設定
FarPoint.Win.Spread.CellType.TextCellType textCell = new FarPoint.Win.Spread.CellType.TextCellType();
textCell.Static = true; // 編集の禁止
fpSpread1.ActiveSheet.Columns[1].CellType = textCell;
fpSpread1.ActiveSheet.Columns[1].BackColor = Color.LavenderBlush;
// 値の設定
for(int i = 0; i < fpSpread1.ActiveSheet.RowCount; i++)
{
for(int j = 0; j < fpSpread1.ActiveSheet.ColumnCount; j++)
{
fpSpread1.ActiveSheet.SetValue(i, j, string.Format("R{0}C{1}", i, j));
}
}
}
private void button1_Click(object sender, EventArgs e)
{
// 選択範囲の値のクリア
FarPoint.Win.Spread.Model.CellRange range = fpSpread1.ActiveSheet.GetSelection(0);
CustomClear(fpSpread1.ActiveSheet, range, true);
}
private void CustomClear(FarPoint.Win.Spread.SheetView sheet, FarPoint.Win.Spread.Model.CellRange range, Boolean dataOnly )
{
// Static = Trueのテキスト型セルを除いたクリア処理
for(int i = range.Row;i< range.Row + range.RowCount; i++)
{
for(int j = range.Column;j< range.ColumnCount; j++)
{
if(!(sheet.GetCellType(i, j).GetType()== typeof(FarPoint.Win.Spread.CellType.TextCellType)&& ((FarPoint.Win.Spread.CellType.TextCellType)sheet.GetCellType(i, j)).Static)){
sheet.ClearRange(i, j, 1, 1, dataOnly);
}
}
}
}
旧文書番号
84308