VB.NETで作成したプログラムの結果をcsvファイルとして出力したいということ意外とありますよね?
Datagrid(データグリッド)などを使用している場合は、バインドを行うことで表示している結果をそのままcsvにすることも可能です。
バインドとは簡単に言うと、データと表示させる画面を結びつけると言うことです。
ここでは、バインドを使用せずに値を直接指定してcsv出力する方法をご紹介します。
CSVファイルの作成
実行後に作成されるファイルのイメージ
a | b |
あああ | いいい |
※下記のXXXXにはCSVのパスを記載すること。
'CSVファイルのエンコードを指定(今回はShift_JIS) Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS") '書き込むファイルを開く Dim sr As New System.IO.StreamWriter(XXXX, False, enc) '1列目の1行目にAを書き込む sr.Write("A") 'カンマ区切りにするためにカンマを書き込む sr.Write(","c) '2列目の1行目にBを書き込む sr.Write("B") '改行 sr.Write(vbCrLf) '1列目の2行目にAを書き込む sr.Write("あああ") 'カンマ区切りにするためにカンマを書き込む sr.Write(","c) '2列目の2行目にBを書き込む sr.Write("いいい") '閉じる(解放) sr.Close()
コピペで問題なく動作すると思いますが、順番に説明していきましょう。
まずは、エンコード処理です。
こちらを行わないと、日本語が文字化けしてしまいますので日本語で出力する場合は必ず行いましょう。
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding(“Shift_JIS”)
次に、CSVファイルのパスを指定しファイルをオープンします。
Dim sr As New System.IO.StreamWriter(XXXX, False, enc)
いよいよメインとなるデータを書き込む処理です。
区切り文字にカンマを入れることがポイントです。
改行の仕方も覚えましょう。
sr.Write(“A”)
‘カンマ区切りにするためにカンマを書き込む
sr.Write(“,”c)
‘2列目の1行目にBを書き込む
sr.Write(“B”)
‘改行
sr.Write(vbCrLf)
‘1列目の2行目にAを書き込む
sr.Write(“あああ”)
‘カンマ区切りにするためにカンマを書き込む
sr.Write(“,”c)
‘2列目の2行目にBを書き込む
sr.Write(“いいい”)
最後に解放処理です。
ITに精通していない方は聞き慣れない単語かと思いますが、
プログラムは動作するたびにメモリというパソコンの領域を使用します。
この解放を怠ると、内部的にメモリが使用されたままの状態になり、連続的にそれをするとパソコンの動作が遅くなったりします。
sr.Close()
これらを上手に使いこなして、CSVファイルへのデータ出力を行ってみてください。
コメントを残す