VB.NET - CSVファイル書込処理
文字列の2次元配列の内容をCSVファイルに全て書き込む関数を説明します。
CSVファイルに書込む方法は、比較的簡単で、指定されたカラムデータに「”」(ダブルクォート)を全て付加して書込めばできます。
書込みは「Shift-JIS」のEncodingを指定し、System.IO.StreamWriterでファイルを開き、
指定されたカラムデータを順次書き込んで処理します。
今回の関数では CSVファイルの読込について で読込まれたデータを書込むことを
前提にしていますので、書き込みデータは文字列の2次元配列で指定します。
この関数では、全てのカラムデータにダブルクォートで囲っていますが、ダブルクォートが必要なデータのみ囲みたい場合には
指定されたカラムデータ文字列がダブルクォートを必要としているかを検査して処理する必要があります。
文字列の中に、カンマ、タブ、CR、LFが含まれていたり、前後に空白が在ればダブルクォートを必要とします。
CSVファイル書込処理
01 | ''' ----------------------------------------------------------------------------- |
02 | ''' <summary> |
03 | ''' CSVファイルの書込処理 |
04 | ''' </summary> |
05 | ''' <param name="astrFileName">ファイル名 |
06 | ''' <param name="aarrData">書込データ文字列の2次元配列 |
07 | ''' <returns>True:結果OK, False:NG</returns> |
08 | ''' <remarks>カラム名をファイルに出力したい場合は、書込データの先頭に設定すること</remarks> |
09 | ''' ----------------------------------------------------------------------------- |
10 | Private Function WriteCsv( ByVal astrFileName As String , |
11 | ByVal aarrData As String ()()) As Boolean |
12 | WriteCsv = False |
13 | 'ファイルStreamWriter |
14 | Dim sw As System.IO.StreamWriter = Nothing |
15 |
16 | Try |
17 | 'CSVファイル書込に使うEncoding |
18 | Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding( "Shift_JIS" ) |
19 | '書き込むファイルを開く |
20 | sw = New System.IO.StreamWriter(astrFileName, False , enc) |
21 |
22 | For Each arrLine() As String In aarrData |
23 | Dim blnFirst As Boolean = True |
24 | Dim strLIne As String = "" |
25 | For Each str As String In arrLine |
26 | If blnFirst = False Then |
27 | '「,」(カンマ)の書込 |
28 | sw.Write( "," ) |
29 | End If |
30 | blnFirst = False |
31 | '1カラムデータの書込 |
32 | str = "" "" & str & "" "" |
33 | sw.Write(str) |
34 | Next |
35 | '改行の書込 |
36 | sw.Write(vbCrLf) |
37 | Next |
38 |
39 | '正常終了 |
40 | Return True |
41 |
42 | Catch ex As Exception |
43 | 'エラー |
44 | MsgBox(ex.Message) |
45 | Finally |
46 | '閉じる |
47 | If sw IsNot Nothing Then |
48 | sw.Close() |
49 | End If |
50 | End Try |
51 | End Function |
52 |
53 | '仮にテストプログラム |
54 | Private Sub Button1_Click(sender As Object , e As EventArgs) Handles Button1.Click |
55 | Try |
56 | 'CSVファイル読込処理 |
57 | Dim arrCsv()() As String = ReadCsv( "test.csv" , False , False ) |
58 | 'CSVファイル書込処理 |
59 | Dim blnRet As Boolean = WriteCsv( "testw.csv" , arrCsv) |
60 |
61 | Catch ex As Exception |
62 | MsgBox(ex.Message) |
63 | End Try |
64 | End Sub |