LoginSignup
0
1

More than 1 year has passed since last update.

CSVHelper(27.1.1)書き込み・読み込みサンプル(VS2019で)

Posted at

経緯と目的等

.net環境でCSVHelperを利用することがあったため、自分用の覚え書きとして残しました。
一応ジェネリッククラス化してあるので、CSVから読み込んだデータをモデルクラスに格納できるし、逆にモデルクラスのListをCSV形式に変換できる。

CSVHelperを使えるようにする

この時の最新はVersion27.1.1でした。
使用するためには、ソリューションエクスプローラー/NuGetパッケージの管理から”CSVHelper”で検索してインストールでOK(詳細は省略)

サンプル

CSVHelperをインストールした前提としますが、以下のコード

CsvHelperWrap.vb

Imports System.IO
Imports CsvHelper

Public Class CsvHelperWrap(Of TYPE)
    Public Property CsvConfig As New Configuration.CsvConfiguration(Globalization.CultureInfo.InvariantCulture)
    Public Property FilePath As String = ".\file.csv"

    Private SWriter As StreamWriter
    Private CSVHelpWriter As CsvWriter

    Public Sub New()
        Me.CsvConfig.HasHeaderRecord = False
    End Sub


    ''' <summary>
    ''' CSVHelper用のWriteStreamをオープンする
    ''' </summary>
    Public Sub WriteOpen()
        SWriter = New StreamWriter(Me.FilePath, True, Text.Encoding.GetEncoding("SHIFT_JIS"))
        CSVHelpWriter = New CsvWriter(SWriter, CsvConfig)
    End Sub
    ''' <summary>
    ''' CSVHelper用のWriteStreamをクローズする
    ''' </summary>
    Public Sub WriteClose()
        SWriter.Dispose()
        SWriter = Nothing
    End Sub


    ''' <summary>
    ''' 指定したモデルクラスのListをCSVに書き込む
    ''' </summary>
    ''' <param name="dat"></param>
    ''' <remarks>書き込み後は、手動でクローズする前提だが、オープンだけはしてくれる</remarks>
    Public Sub Write(ByVal dat As List(Of TYPE))
        Try
            If SWriter Is Nothing Then
                Call Me.WriteOpen()
            End If
            CSVHelpWriter.WriteRecords(dat)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub
    ''' <summary>
    ''' 指定したCSVファイルをモデルクラスのListに読み込む
    ''' </summary>
    ''' <returns></returns>
    Public Function Read() As List(Of TYPE)
        Dim records As New List(Of TYPE)()
        Try
            Using SReader As New StreamReader(Me.FilePath, Text.Encoding.GetEncoding("SHIFT_JIS"))
                Using CSVHelpReader As New CsvReader(SReader, CsvConfig)
                    records = CSVHelpReader.GetRecords(Of TYPE)().ToList
                End Using
            End Using
        Catch ex As Exception
            Throw ex
        End Try
        Return records
    End Function
End Class


0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1