Excel出力時、テキストの表示位置が設定と異なる
対象製品
VS-FlexGrid Pro 8.0J
状況
現象確認済み
詳細
Cellプロパティ(flexcpAlignment)を使用し、セル単位でセルテキストの表示位置を設定したグリッドを、SaveGridメソッドでExcelに出力すると、グリッドで表示されている位置と異なって出力されてしまう場合があります。
◎サンプルコード(VB)
Private Sub Form_Load()
VSFlexGrid1.FixedRows = 0
VSFlexGrid1.FixedCols = 0
VSFlexGrid1.Rows = 10
VSFlexGrid1.Cols = 5
For i = 0 To VSFlexGrid1.Rows - 1
For j = 0 To VSFlexGrid1.Cols - 1
Select Case j
Case 0
VSFlexGrid1.Cell(flexcpText, i, j) = "AAA"
VSFlexGrid1.Cell(flexcpAlignment, i, j) = flexAlignLeftTop
If i Mod 2 = 0 Then
VSFlexGrid1.Cell(flexcpBackColor, i, j) = vbYellow
End If
Case 1
VSFlexGrid1.Cell(flexcpText, i, j) = "BBB"
VSFlexGrid1.Cell(flexcpAlignment, i, j) = flexAlignCenterCenter
Case Else
End Select
Next
Next
End Sub
Private Sub Command1_Click()
Call VSFlexGrid1.SaveGrid(".¥result.xls", flexFileExcel, "Sheet1")
End Sub
◎サンプルコード(VB)
Private Sub Form_Load()
VSFlexGrid1.FixedRows = 0
VSFlexGrid1.FixedCols = 0
VSFlexGrid1.Rows = 10
VSFlexGrid1.Cols = 5
For i = 0 To VSFlexGrid1.Rows - 1
For j = 0 To VSFlexGrid1.Cols - 1
Select Case j
Case 0
VSFlexGrid1.Cell(flexcpText, i, j) = "AAA"
VSFlexGrid1.Cell(flexcpAlignment, i, j) = flexAlignLeftTop
If i Mod 2 = 0 Then
VSFlexGrid1.Cell(flexcpBackColor, i, j) = vbYellow
End If
Case 1
VSFlexGrid1.Cell(flexcpText, i, j) = "BBB"
VSFlexGrid1.Cell(flexcpAlignment, i, j) = flexAlignCenterCenter
Case Else
End Select
Next
Next
End Sub
Private Sub Command1_Click()
Call VSFlexGrid1.SaveGrid(".¥result.xls", flexFileExcel, "Sheet1")
End Sub
回避方法
ColAlignmentプロパティを使用し、列単位で表示位置を設定することで回避する方法をご検討ください。
◎サンプルコード(VB)
Private Sub Form_Load()
VSFlexGrid1.FixedRows = 0
VSFlexGrid1.FixedCols = 0
VSFlexGrid1.Rows = 10
VSFlexGrid1.Cols = 5
'回避方法
VSFlexGrid1.ColAlignment(0) = flexAlignLeftTop
VSFlexGrid1.ColAlignment(1) = flexAlignCenterCenter
For i = 0 To VSFlexGrid1.Rows - 1
For j = 0 To VSFlexGrid1.Cols - 1
Select Case j
Case 0
VSFlexGrid1.Cell(flexcpText, i, j) = "AAA"
'VSFlexGrid1.Cell(flexcpAlignment, i, j) = flexAlignLeftTop
If i Mod 2 = 0 Then
VSFlexGrid1.Cell(flexcpBackColor, i, j) = vbYellow
End If
Case 1
VSFlexGrid1.Cell(flexcpText, i, j) = "BBB"
'VSFlexGrid1.Cell(flexcpAlignment, i, j) = flexAlignCenterCenter
Case Else
End Select
Next
Next
End Sub
Private Sub Command1_Click()
Call VSFlexGrid1.SaveGrid(".¥result.xls", flexFileExcel, "Sheet1")
End Sub
◎サンプルコード(VB)
Private Sub Form_Load()
VSFlexGrid1.FixedRows = 0
VSFlexGrid1.FixedCols = 0
VSFlexGrid1.Rows = 10
VSFlexGrid1.Cols = 5
'回避方法
VSFlexGrid1.ColAlignment(0) = flexAlignLeftTop
VSFlexGrid1.ColAlignment(1) = flexAlignCenterCenter
For i = 0 To VSFlexGrid1.Rows - 1
For j = 0 To VSFlexGrid1.Cols - 1
Select Case j
Case 0
VSFlexGrid1.Cell(flexcpText, i, j) = "AAA"
'VSFlexGrid1.Cell(flexcpAlignment, i, j) = flexAlignLeftTop
If i Mod 2 = 0 Then
VSFlexGrid1.Cell(flexcpBackColor, i, j) = vbYellow
End If
Case 1
VSFlexGrid1.Cell(flexcpText, i, j) = "BBB"
'VSFlexGrid1.Cell(flexcpAlignment, i, j) = flexAlignCenterCenter
Case Else
End Select
Next
Next
End Sub
Private Sub Command1_Click()
Call VSFlexGrid1.SaveGrid(".¥result.xls", flexFileExcel, "Sheet1")
End Sub