作成日: 2024/02/21 最終更新日: 2024/02/21
文書種別
制限事項
詳細
新しいスタイルシステムを有効と設定したSPREADにおいて、列数を指定し、シートに表示されている行のセル範囲に対してCellsプロパティを使い一度に背景色を適用すると、エクスポートしたExcel上ではセル範囲ではなく行全体に背景色が設定されます。
シートに表示されている行のセル範囲に対してCellsプロパティを使い一度に背景色を適用すると、製品の内部ではCells(0、0、0、[Last_Column])のように最終列(Last_Column)のオブジェクトに対する設定とみなされるためExcel上では行全体に背景色が設定されます。
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadとButtonを配置する
2.下記のサンプルコードを記述する
2.プロジェクトをデバッグ実行する
3.Button1を押下する
■サンプルコード(VB.NET)
シートに表示されている行のセル範囲に対してCellsプロパティを使い一度に背景色を適用すると、製品の内部ではCells(0、0、0、[Last_Column])のように最終列(Last_Column)のオブジェクトに対する設定とみなされるためExcel上では行全体に背景色が設定されます。
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadとButtonを配置する
2.下記のサンプルコードを記述する
2.プロジェクトをデバッグ実行する
3.Button1を押下する
■サンプルコード(VB.NET)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' シートの設定
FpSpread1.ActiveSheet.RowCount = 5
FpSpread1.ActiveSheet.ColumnCount = 3
' 現象発生
FpSpread1.ActiveSheet.Cells(0, 0, 0, FpSpread1.ActiveSheet.ColumnCount - 1).BackColor = Color.Aqua
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Excelファイル出力
FpSpread1.SaveExcel("test.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
End Sub
' シートの設定
FpSpread1.ActiveSheet.RowCount = 5
FpSpread1.ActiveSheet.ColumnCount = 3
' 現象発生
FpSpread1.ActiveSheet.Cells(0, 0, 0, FpSpread1.ActiveSheet.ColumnCount - 1).BackColor = Color.Aqua
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Excelファイル出力
FpSpread1.SaveExcel("test.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
End Sub
回避方法
最終列だけを除いたセル範囲に対して背景色を設定し最終列のセルだけ単独で背景色を設定するか、すべてセル単位で背景色を設定することで回避可能です。または、LegacyBehaviorsにStyleを含めて従来のスタイルシステムを使用することでも回避ができます。
■サンプルコード(VB.NET)
■サンプルコード(VB.NET)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' シートの設定
FpSpread1.ActiveSheet.RowCount = 5
FpSpread1.ActiveSheet.ColumnCount = 3
' 回避策1
'FpSpread1.ActiveSheet.Cells(0, 0, 0, FpSpread1.ActiveSheet.ColumnCount - 2).BackColor = Color.Aqua
'FpSpread1.ActiveSheet.Cells(0, FpSpread1.ActiveSheet.ColumnCount - 1).BackColor = Color.Aqua
'回避策2
For i = 0 To FpSpread1.ActiveSheet.ColumnCount - 1
FpSpread1.ActiveSheet.Cells(0, i).BackColor = Color.Aqua
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Excelファイル出力
FpSpread1.SaveExcel("test.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
End Sub
' シートの設定
FpSpread1.ActiveSheet.RowCount = 5
FpSpread1.ActiveSheet.ColumnCount = 3
' 回避策1
'FpSpread1.ActiveSheet.Cells(0, 0, 0, FpSpread1.ActiveSheet.ColumnCount - 2).BackColor = Color.Aqua
'FpSpread1.ActiveSheet.Cells(0, FpSpread1.ActiveSheet.ColumnCount - 1).BackColor = Color.Aqua
'回避策2
For i = 0 To FpSpread1.ActiveSheet.ColumnCount - 1
FpSpread1.ActiveSheet.Cells(0, i).BackColor = Color.Aqua
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Excelファイル出力
FpSpread1.SaveExcel("test.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
End Sub