コンボボックス型セルに設定した列の一部のセルをテキスト型セルに設定してExcelファイルにエクスポートすると、該当列のすべてのセルに「データの入力規則」が設定されてしまう
対象製品
SPREAD for Windows Forms 7.0J
状況
修正済み
詳細
コンボボックス型セルはExcelファイルにエクスポートすると、「データの入力規則」が設定されます。
コンボボックス型セルに設定した列の一部のセルをテキスト型セルに設定してExcelファイルにエクスポートすると、テキスト型セルを設定したセルを含め、該当列のすべてのセルに「データの入力規則」が設定されてしまいます。
【手順】
1.新規フォームにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.ボタンをクリックします
--ExcelファイルのB2セルに「データの入力規則」が設定されています
【サンプルコード】
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' コンボボックス型セルの設定
Dim cbstr As String()
cbstr = New String() {"Jan", "Feb", "Mar", "Apr", "May", "Jun"}
Dim cmbocell As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
cmbocell.Items = cbstr
FpSpread1.ActiveSheet.Columns(1).CellType = cmbocell
' テキスト型セルの設定
Dim tc As New FarPoint.Win.Spread.CellType.TextCellType()
FpSpread1.ActiveSheet.Cells(1, 1).CellType = tc
' テストデータの設定
For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
FpSpread1.ActiveSheet.Cells(i, 1).Value = "Mar"
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
FpSpread1.SaveExcel("test.xls")
End Sub
コンボボックス型セルに設定した列の一部のセルをテキスト型セルに設定してExcelファイルにエクスポートすると、テキスト型セルを設定したセルを含め、該当列のすべてのセルに「データの入力規則」が設定されてしまいます。
【手順】
1.新規フォームにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.ボタンをクリックします
--ExcelファイルのB2セルに「データの入力規則」が設定されています
【サンプルコード】
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' コンボボックス型セルの設定
Dim cbstr As String()
cbstr = New String() {"Jan", "Feb", "Mar", "Apr", "May", "Jun"}
Dim cmbocell As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
cmbocell.Items = cbstr
FpSpread1.ActiveSheet.Columns(1).CellType = cmbocell
' テキスト型セルの設定
Dim tc As New FarPoint.Win.Spread.CellType.TextCellType()
FpSpread1.ActiveSheet.Cells(1, 1).CellType = tc
' テストデータの設定
For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
FpSpread1.ActiveSheet.Cells(i, 1).Value = "Mar"
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
FpSpread1.SaveExcel("test.xls")
End Sub
回避方法
Service Pack 3(v7.0.2014.2008)で修正済み。
Service Pack 3(v7.0.2014.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
セル単位でセル型を設定します。
【サンプルコード】
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' コンボボックス型セルの設定
Dim cbstr As String()
cbstr = New String() {"Jan", "Feb", "Mar", "Apr", "May", "Jun"}
Dim cmbocell As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
cmbocell.Items = cbstr
'FpSpread1.ActiveSheet.Columns(1).CellType = cmbocell
For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
FpSpread1.ActiveSheet.Cells(i, 1).CellType = cmbocell
Next
' テキスト型セルの設定
Dim tc As New FarPoint.Win.Spread.CellType.TextCellType()
FpSpread1.ActiveSheet.Cells(1, 1).CellType = tc
' テストデータの設定
For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
FpSpread1.ActiveSheet.Cells(i, 1).Value = "Mar"
Next
End Sub
Service Pack 3(v7.0.2014.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
セル単位でセル型を設定します。
【サンプルコード】
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' コンボボックス型セルの設定
Dim cbstr As String()
cbstr = New String() {"Jan", "Feb", "Mar", "Apr", "May", "Jun"}
Dim cmbocell As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
cmbocell.Items = cbstr
'FpSpread1.ActiveSheet.Columns(1).CellType = cmbocell
For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
FpSpread1.ActiveSheet.Cells(i, 1).CellType = cmbocell
Next
' テキスト型セルの設定
Dim tc As New FarPoint.Win.Spread.CellType.TextCellType()
FpSpread1.ActiveSheet.Cells(1, 1).CellType = tc
' テストデータの設定
For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
FpSpread1.ActiveSheet.Cells(i, 1).Value = "Mar"
Next
End Sub