設定されている複数行の文字列に対して、セル(行)の高さが不足している時、最後の行が表示されない場合がある

文書番号 : 41478     文書種別 : 制限事項     登録日 : 2018/01/12     最終更新日 : 2018/05/10
文書を印刷する
対象製品
SPREAD for Windows Forms 10.0J
詳細
■事象
Multilineプロパティを"true"に設定したテキスト型セルに複数行の文字列を設定した時、セル(行)の高さが不足していると、最後の行が表示されない場合があります。

なお、この事象は、セルの垂直方向の配置位置(VerticalAlignmentプロパティ)が"General"・"Top"以外の値に設定されている場合に発生します。

設定されている複数行の文字列に対して、セル(行)の高さが不足している時、最後の行が表示されない場合がある

■再現コード(VB.NET)
' 1列目をテキスト型セルに設定します。
Dim textCell1 As New FarPoint.Win.Spread.CellType.TextCellType()
textCell1.Multiline = True
textCell1.WordWrap = True
FpSpread1.ActiveSheet.Columns(1).CellType = textCell1

' 行の高さと文字列の垂直位置、データ(複数行)を設定します
For i As Integer = 0 To 5
  FpSpread1.ActiveSheet.SetRowHeight(i, 37)

  FpSpread1.ActiveSheet.Cells(i, 1).VerticalAlignment _
    = DirectCast(i, FarPoint.Win.Spread.CellVerticalAlignment)
  FpSpread1.ActiveSheet.SetValue(i, 1, "line1" & vbCrLf & "line2" & vbCrLf & "line3")

  FpSpread1.ActiveSheet.SetValue(i, 0, FpSpread1.ActiveSheet.Cells(i, 1).VerticalAlignment.ToString())
Next


■備考
文字列を表示するのに必要な高さはSPREAD独自の仕様によって計測されています。したがって、Microsoft Excel上では表示されていても、そのファイルをSPREADに読み込んだ場合、表示されない場合があります。
また、文字列を表示するのに必要な高さは、SPREADのバージョンによっても異なります。たとえば、7.0Jで行われたこちらの仕様変更によって、文字列を表示するのに必要な高さも変更されています。

回避方法
本件は、仕様上の動作となります。
回避策としては、以下のいずれかの方法が有効です。
  1. 文字列全体を表示できるように行の高さ(またはフォントサイズ)を調整する。
    なお、必要な高さは設定されているフォントの種類やサイズ等に依存します。

  2. TextAdjustmentSpacingプロパティの値を小さくする。
    ◆サンプルコード(VB.NET)…前述の「■再現コード」より一部抜粋
    textCell1.WordWrap = True
    textCell1.TextAdjustmentSpacing = 0
    FpSpread1.ActiveSheet.Columns(1).CellType = textCell1

    ※ただし、TextAdjustmentSpacingプロパティは互換性のために用意されたプロパティであるため、こちらの回避策は推奨されません。あらかじめご了承ください。