文字列の2次元配列の内容をCSVファイルに全て書き込む関数を説明します。 CSVファイルに書込む方法は、比較的簡単で、指定されたカラムデータに「”」(ダブルクォート)を全て付加して書込めばできます。
書込みは「Shift-JIS」のEncodingを指定し、System.IO.StreamWriterでファイルを開き、 指定されたカラムデータを順次書き込んで処理します。
今回の関数では CSVファイルの読込について で読込まれたデータを書込むことを 前提にしていますので、書き込みデータは文字列の2次元配列で指定します。
この関数では、全てのカラムデータにダブルクォートで囲っていますが、ダブルクォートが必要なデータのみ囲みたい場合には 指定されたカラムデータ文字列がダブルクォートを必要としているかを検査して処理する必要があります。 文字列の中に、カンマ、タブ、CR、LFが含まれていたり、前後に空白が在ればダブルクォートを必要とします。
CSVファイル書込処理
''' ----------------------------------------------------------------------------- '''''' CSVファイルの書込処理 ''' ''' <param name="astrFileName">ファイル名</param> ''' <param name="aarrData">書込データ文字列の2次元配列</param> '''True:結果OK, False:NG '''カラム名をファイルに出力したい場合は、書込データの先頭に設定すること ''' ----------------------------------------------------------------------------- Private Function WriteCsv(ByVal astrFileName As String, ByVal aarrData As String()()) As Boolean WriteCsv = False 'ファイルStreamWriter Dim sw As System.IO.StreamWriter = Nothing Try 'CSVファイル書込に使うEncoding Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS") '書き込むファイルを開く sw = New System.IO.StreamWriter(astrFileName, False, enc) For Each arrLine() As String In aarrData Dim blnFirst As Boolean = True Dim strLIne As String = "" For Each str As String In arrLine If blnFirst = False Then '「,」(カンマ)の書込 sw.Write(",") End If blnFirst = False '1カラムデータの書込 str = """" & str & """" sw.Write(str) Next '改行の書込 sw.Write(vbCrLf) Next '正常終了 Return True Catch ex As Exception 'エラー MsgBox(ex.Message) Finally '閉じる If sw IsNot Nothing Then sw.Close() End If End Try End Function '仮にテストプログラム Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try 'CSVファイル読込処理 Dim arrCsv()() As String = ReadCsv("test.csv", False, False) 'CSVファイル書込処理 Dim blnRet As Boolean = WriteCsv("testw.csv", arrCsv) Catch ex As Exception MsgBox(ex.Message) End Try End Sub
関連する記事
⇒CSVファイルの読込について :[Microsoft.VisualBasic.FileIO.TextFieldParser]⇒CSVファイルの DataGridView への読込について
⇒DataGridView からCSVファイルへの書込について
PR
コメント