2013-02-26
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行ごとに取り込んだ方がよいのだろう)