« COPY文 | トップページ | CSVファイルの読込み(TextFieldParser) »

2007年5月27日 (日)

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、プログラミングのランキングサイトはこちらです。

にほんブログ村 IT技術ブログへ 人気blogランキングへ FC2 Blog Rankingへ


最新記事の自動受信登録はこちらです。

はてなRSSに追加

livedoor Readerに追加
My Yahoo!に追加
Googleに追加
goo RSSリーダーに追加

|

« COPY文 | トップページ | CSVファイルの読込み(TextFieldParser) »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/279803/6569555

この記事へのトラックバック一覧です: CSVファイルの保存(書き込み):

« COPY文 | トップページ | CSVファイルの読込み(TextFieldParser) »