dtpjjtpj
@dtpjjtpj

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

VB.net , ClosedXMLでExcelのセルデータを読み書きした際に、改行が読み込まれない。

VB.net , ClosedXMLでフォームを作成し、読込み・書込み・クリアのボタンを設置し、Excelのセルデータを読み書きしています。
Excelのセルデータを読み書きした際に、書き込み時に改行をしたのに、読み込み時にその改行がされません。
解決方法があれば知りたいです。

<作成フォーム>
スクリーンショット.jpg

<実際のコード>
スクリーンショット 2023-03-09 004416.jpg

読込みコード
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'既存のワークブックを開く
Dim wb As New XLWorkbook("C:\Users\dtpjj\Desktop\data.xlsx")

    ' ワークシートを取得する
    Dim ws As IXLWorksheet = wb.Worksheet("Sheet1")

    ' データを読み込む
    Dim result As String = ws.Cell("A1").Value.ToString

    ' 読み取った情報を表示
    Me.TextBox1.Text = result

    MsgBox("データが読み込まれました。")

End Sub

書込みコード

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    '既存のワークブックを開く
    Dim wb = New XLWorkbook("C:\Users\dtpjj\Desktop\data.xlsx")

    ' ワークシートを取得する
    Dim ws As IXLWorksheet = wb.Worksheet("Sheet1")

    ' データを書き込む
    ws.Range("A1").Value = TextBox1.Text

    ' 保存する
    wb.Save()

    MsgBox("データが書き込まれました。")
End Sub

自分で試したこと

書込み時

Hello

World


読込み時

HelloWorld

といった感じです。

Microsoft.Office.Interop.Excel経由で書き込むと改行されるようです。
できれば、ClosedXMLで行いたいです。

0

2Answer

読込み時
HelloWorld
といった感じです。

LenBで文字数を確認してみてください。もし11文字になっているならば、HelloWorldの間に改行を示す\nがあると思われます。しかし、表示上で改行するには、\r\nにする必要があるので、Replace(文字列, vbLF, vbCRLF)で置換すればいいと思います。Excelのセル内での改行がこれに当たります。
もし、10文字ならまったく別な原因です。

1Like

Comments

  1. @dtpjjtpj

    Questioner

    仰る通り.Replace(vbLf, vbCrLf)を追記することで思い通り表示されました。
    ありがとうございました。

読み込み時にその改行がされません。

ClosedXMLは、保存時に改行コードがCRLFからLFに変換されます。

デバッガ

WinForms標準のTextBoxは改行をCRLFで表現するので、このままだとうまく表示されません。LFをCRLFに変換してください。

Dim result As String = ws.Cell("A1").Value.ToString().Replace(vbLf, vbCrLf)

これでどうでしょ。

1Like

Comments

  1. @dtpjjtpj

    Questioner

    仰る通り.Replace(vbLf, vbCrLf)を追記することで思い通り表示されました。
    ありがとうございました。
  2. もし解決されたのであれば、質問のクローズをお願いします。

Your answer might help someone💌