CSVファイルの保存(書き込み)
CSVファイルの定義は
RFC Editor
http://www.rfc-editor.org/rfc/rfc4180.txt
に定義されています。
Excelで保存時にCSVファイルに指定し読み書きしてみるとカンタンに確認できます。
要約
1.行の区切りはCRLFでファイルの終端はCRLFを含まなくても良い。
2.フィールドの区切りは原則,(カンマ)で、
フィールドに,(カンマ)"(ダブルクォーツ)'(クォーツ)、又は制御文字(CRLF,CR,LF)が含まれる場合、又は両端のどちらかにスペースかTABを含む場合、フィールドは"(ダブルクォーツ)で括る。
但し、最初のフィールドの左端と最後のフィールドの右端には"(ダブルクォーツ)が無くても良い。
3.上記条件に該当しないフィールドは"(ダブルクォーツ)で括っても括らなくても良い。
→早い話がCSVで書き込む場合、フィールドは"(ダブルクォーツ)で括れば問題ない。
4.フィールドに"(ダブルクォーツ)を含む場合、直後に"(ダブルクォーツ)を追加する。
CSVを読込みする時はTextFieldParser オブジェクトを使用すると上記の条件を意識しないでコーディングできます。
VB.NET2005
実行するにはC:\TEXT.FIXに下記5行を複写して下さい。
1AAA カンマ区切り
2"BBB"ダブルクォーツで括られている
3CC,C フィールド内にカンマが有る
4D"DD フィールド内にダブルクォーツが有る
5"EEE"フィールドの両端がダブルクォーツ
Module Module1
Sub Main()
Dim rd As String
Dim sr As New System.IO.StreamReader("C:\TEST.FIX" _
, System.Text.Encoding.GetEncoding("Shift_JIS")) '入力フィアル
Dim sw As New System.IO.StreamWriter("C:\TEST.CSV" _
, False, System.Text.Encoding.GetEncoding("Shift_JIS")) '出力ファイル
Do Until sr.EndOfStream
rd = sr.ReadLine
sw.WriteLine(Edit_CSV_Field(Mid(rd, 1, 1)) _
+ "," + Edit_CSV_Field(Mid(rd, 2, 5)) _
+ "," + Edit_CSV_Field(Mid(rd, 7)))
Loop
sw.Close()
sr.Close()
End Sub
'フィールドは全て”で括る
'フィールド内の”は””に置換
Private Function Edit_CSV_Field(ByVal strItem As String) As String
Return """" + strItem.Replace("""", """""") + """"
End Function
End Module
実行結果(C:\TEST.CSVの内容)
"1","AAA ","カンマ区切り"
"2","""BBB""","ダブルクォーツで括られている "
"3","CC,C ","フィールド内にカンマが有る"
"4","D""DD ","フィールド内にダブルクォーツが有る"
"5","""EEE""","フィールドの両端がダブルクォーツ "
お役に立てましたか?
IT、プログラミングのランキングサイトはこちらです。
最新記事の自動受信登録はこちらです。 |
![]() |
![]() |
![]() |
![]() |
| 固定リンク







コメント