Open XML(.xlsx)形式ファイルにエクスポートする際、改行コードのキャリッジリターン (CR)が削除されない

文書番号 : 37713     文書種別 : 不具合     登録日 : 2014/12/24     最終更新日 : 2017/04/05
文書を印刷する
対象製品
SPREAD for Windows Forms 7.0J
状況
修正済み
詳細
SPREAD for Windows Formsでは、改行コード(CR+LF)のキャリッジリターン (CR)を削除してExcelファイルにエクスポートしますが、Open XML(.xlsx)形式ファイルでは、キャリッジリターンが削除されません。
Open XML(.xlsx)形式ファイルでも、キャリッジリターンが削除されるのが本来の動作です。
回避方法
Service Pack 5(v7.0.2018.2008)で修正済み。
Service Pack 5(v7.0.2018.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------

明示的に文字列内の改行コード(CR+LF)をラインフィード (LF) に変換します。

【サンプルコード】
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    '【対応策】
    Using spread As New FarPoint.Win.Spread.FpSpread()
      spread.Visible = False
      Me.Controls.Add(spread)

      Dim sheet As New FarPoint.Win.Spread.SheetView("Sheet1")
      sheet = FpSpread1.ActiveSheet.Clone()
      For i As Integer = 0 To sheet.RowCount - 1
        For j As Integer = 0 To sheet.ColumnCount - 1
          Dim value As Object = sheet.GetValue(i, j)
          If String.Concat(value).Contains(vbCr & vbLf) Then
            value = String.Concat(value).Replace(vbCr & vbLf, vbLf)
            sheet.SetValue(i, j, value)
          End If
        Next
      Next
      sheet.Protect = False
      spread.Sheets.Add(sheet)
      spread.SaveExcel("test2.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)

      Me.Controls.Remove(spread)
    End Using
  End Sub