作成日: 2018/09/11 最終更新日: 2018/12/18
文書種別
不具合
状況
修正済み
詳細
SPREADにデータソースを連結している場合、旧形式の条件付き書式が正常しない場合があります。
■サンプルコード(VB.NET)
■サンプルコード(VB.NET)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' サンプル用DataTableを作成します。
Dim dt As New DataTable
dt.Columns.Add("test1", GetType(Int32))
dt.Rows.Add(10)
dt.Rows.Add(20)
dt.Rows.Add(30)
' 作成したデータをSPREADに連結します。
FpSpread1.ActiveSheet.DataAutoHeadings = False
FpSpread1.ActiveSheet.DataSource = dt
' 非連結列を追加し、連結列と同じデータをセットします。
FpSpread1.ActiveSheet.AddColumns(1, 1)
For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
FpSpread1.ActiveSheet.Cells(i, 1).Value = FpSpread1.ActiveSheet.Cells(i, 0).Value
Next
' 条件付き書式用のスタイルを定義します。
Dim styleA As New FarPoint.Win.Spread.NamedStyle()
Dim styleB As New FarPoint.Win.Spread.NamedStyle()
styleA.ForeColor = Color.Blue
styleB.ForeColor = Color.Red
' すべてのセルに同じ条件付き書式を設定します。
' (20以下の時:styleA、20より大きい時:styleB)
FpSpread1.ActiveSheet.SetConditionalFormat _
(-1, -1, styleA, FarPoint.Win.Spread.ComparisonOperator.LessThanOrEqualTo, "20")
FpSpread1.ActiveSheet.SetConditionalFormat _
(-1, -1, styleB, FarPoint.Win.Spread.ComparisonOperator.GreaterThan, "20")
End Sub
' サンプル用DataTableを作成します。
Dim dt As New DataTable
dt.Columns.Add("test1", GetType(Int32))
dt.Rows.Add(10)
dt.Rows.Add(20)
dt.Rows.Add(30)
' 作成したデータをSPREADに連結します。
FpSpread1.ActiveSheet.DataAutoHeadings = False
FpSpread1.ActiveSheet.DataSource = dt
' 非連結列を追加し、連結列と同じデータをセットします。
FpSpread1.ActiveSheet.AddColumns(1, 1)
For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
FpSpread1.ActiveSheet.Cells(i, 1).Value = FpSpread1.ActiveSheet.Cells(i, 0).Value
Next
' 条件付き書式用のスタイルを定義します。
Dim styleA As New FarPoint.Win.Spread.NamedStyle()
Dim styleB As New FarPoint.Win.Spread.NamedStyle()
styleA.ForeColor = Color.Blue
styleB.ForeColor = Color.Red
' すべてのセルに同じ条件付き書式を設定します。
' (20以下の時:styleA、20より大きい時:styleB)
FpSpread1.ActiveSheet.SetConditionalFormat _
(-1, -1, styleA, FarPoint.Win.Spread.ComparisonOperator.LessThanOrEqualTo, "20")
FpSpread1.ActiveSheet.SetConditionalFormat _
(-1, -1, styleB, FarPoint.Win.Spread.ComparisonOperator.GreaterThan, "20")
End Sub
回避方法
Service Pack 2(v11.0.4503.2012)で修正済み。
Service Pack 2を適用せずに対処する方法としては、DataSourceプロパティにデータオブジェクト(DataTable)を直接設定するのではなく、SpreadDataBindingAdapterを使用する方法が有効です。
上記のサンプルコードの場合、データ連結部分を以下のように変更します。
■サンプルコード(VB.NET)
Service Pack 2を適用せずに対処する方法としては、DataSourceプロパティにデータオブジェクト(DataTable)を直接設定するのではなく、SpreadDataBindingAdapterを使用する方法が有効です。
上記のサンプルコードの場合、データ連結部分を以下のように変更します。
■サンプルコード(VB.NET)
'FpSpread1.ActiveSheet.DataAutoHeadings = False
'FpSpread1.ActiveSheet.DataSource = dt
' ↓
Dim data As New FarPoint.Win.Spread.Data.SpreadDataBindingAdapter
data.DataSource = dt
data.Spread = FpSpread1
data.SheetName = "Sheet1"
data.MapperInfo = New FarPoint.Win.Spread.Data.MapperInfo(0, 0, dt.Rows.Count, dt.Columns.Count)
data.FillSpreadDataByDataSource()
'FpSpread1.ActiveSheet.DataSource = dt
' ↓
Dim data As New FarPoint.Win.Spread.Data.SpreadDataBindingAdapter
data.DataSource = dt
data.Spread = FpSpread1
data.SheetName = "Sheet1"
data.MapperInfo = New FarPoint.Win.Spread.Data.MapperInfo(0, 0, dt.Rows.Count, dt.Columns.Count)
data.FillSpreadDataByDataSource()
旧文書番号
83218