VB.net覚書 CSVファイルを読む

どこにでもTipsはあるが、メモ

Imports System.IO.StreamReader を忘れずに。

'Shift-JISでpathのファイルを全量取り込んでClose
Dim sr As StreamReader = New StreamReader(path, System.Text.Encoding.GetEncoding("Shift-JIS"))
Dim buf As String = sr.ReadToEnd()
sr.Close()

'改行コードで分断
Dim buf_line() As String = csv_buf.Split(vbCrLf)
Dim buf_item() As String
Dim cnt As Integer = buf_line.Length

'空ファイルである場合終了
If line_cnt <= 0 Then
    Return False
End If

'csvを1行ずつ処理
Dim i As Integer = 0
For i = 1 To cnt - 1 Step 1
    buf_line(i) = buf_line(i).Replace(vbCr, "").Replace(vbLf, "").Trim()
    If buf_line(i) <> "" Then    'Length>0の方がいいかも
        buf_item = buf_line(i).Split(",")
    End If
Next i

CRCLでぶちってもLFが残るみたいなので、カンマでSplitする前に改行コードを全部Replaceさせた。
普通はCRだけででぶちって、LFは改行として使うのだろう。(セル内改行として必要な場合がある・・・)

全量一括で取り込んだ方が、速度としては早い。
(メモリは喰うので、大量の場合は1行ごとに取り込んだ方がよいのだろう)

Tags:,

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください