.net column
.NET開発者のためのブログメディア

VB.NETでCSV出力する方法とは?CSV出力をしてみよう

2021年06月03日

SE
CSV出力する方法には、どのようなものがありますか?

PM
ここではVB.NETを利用したCSV出力について見ていきましょう。

VB.NETでCSV出力をする方法とは?


今回は、VB.NETでCSV出力を行う方法について紹介します。

CSVとはComma Separated Valueの略で、カンマで区切ったテキストファイルデータのことを表します。ファイルの拡張子は「csv」であり、データ交換用のファイルとして知られています。基幹システムに取り込んだり、BIツールで分析したりするうえで便利な形式のファイルです。

VB.NETで作られたアプリにおいても、DataTableやリストなどに格納されている情報をCSV出力したい場面があるでしょう。VB.NETでもCSV出力をすることが可能です。この記事では出力方法を紹介しますので、興味のある方はぜひご覧ください。

VB.NETでCSV出力をする方法


はじめに、DataTableに格納されているリスト情報をCSV出力するVB.NETのサンプルプログラムをご紹介します。以下の社員リストをCSV出力してみます。

サンプルプログラム

社員リストと、リストをCSV出力するVB.NETのサンプルプログラムです。書き込むファイルを開いてから、ヘッダー部分を出力し、続いて明細レコードを出力しています。

社員リスト

CSV出力する社員リストです。社員コード、氏名、部署、年齢、役職の情報が社員リスト用のDataTableにセットされていると仮定し、8名分のリストを用意しました。

社員コード 氏名 部署 年齢 役職
0001 社員01 総務部 45 部長
0002 社員02 営業部 43 部長
0003 社員03 人事部 41 課長
0004 社員04 IT部 40 係長
0005 社員05 マーケティング部 38 課長
0006 社員06 製造部 33 一般
0007 社員07 人事部 29 主任
0008 社員08 IT部 25 一般

ソースコード

実行結果

CnvDataTableToCsvメソッドの引数に、社員リストのDataTable変数、CSV出力先のパス・ファイル名、ヘッダー出力=Trueをそれぞれ指定し、プログラムを実行すると、下記のデータがCSVファイルへと出力されます。

“社員コード”,”氏名”,”部署”,”年齢”,”役職”
“0001”,”社員01″,”総務部”,”45″,”部長”
“0002”,”社員02″,”営業部”,”45″,”部長”
“0003”,”社員03″,”人事部”,”45″,”課長”
“0004”,”社員04″,”IT部”,”45″,”係長”
“0005”,”社員05″,”マーケティング部”,”38″,”課長”
“0006”,”社員06″,”製造部”,”33″,”一般”
“0007”,”社員07″,”人事部”,”29″,”主任”
“0008”,”社員08″,”IT部”,”25″,”一般”

サンプルプログラムの解説

VB.NETにおいてCSVファイルを書き込むには、System.IO.StreamWriterクラスを使用します。


第1引数のpathは、ファイルのパスとファイル名を指定するString型の引数です。

第2引数のappendはBoolean型の引数で、ファイルへの追加、もしくはファイルの上書きを指定します。Trueの場合は既存のファイルに対して行追加を、Falseの場合は既存のファイルに対し新しいファイルとして上書きを行います。

第3引数のencodingは文字コードの設定を行うSystem.Text.Encoding型の引数で、上記サンプルプログラムでは文字コード「Shift_JIS」で出力するため、


のように、取得したShift_JISのエンコーディングを第3引数に指定しています。

System.IO.StreamWriterクラスで書き込むファイルを開いた後は、CSVの見出しを出力し、レコード情報を書き込みしています。書き込みはSystem.IO.StreamWriterクラスのWriteメソッドを用いて行います。

書き込む際に各項目を、作成したEncloseDoubleQuotesメソッドを用いてダブルクォーテーションで囲み、最終列を除いてカンマを付与し、最終列になったら改行を行います。改行はWriteメソッドの引数に改行文字列vbCrLfを指定して実現しています。

最後に、Closeメソッドを用いて解放処理をします。解放を行わないと内部的なメモリが使用されたままの状態になり、処理が遅くなる要因になります。Closeメソッドの記述がなくてもプログラムは動作してしまいますので、処理の最後に忘れずにCloseメソッドを記述しましょう。

SE
最後の解放処理を忘れると大変ですね。

PM
そうですね。全体の処理速度が遅くなる原因になります。またエンコード処理を忘れると文字化けの原因にもなります。

VB.NETでCSV出力をしてみよう!


いかがだったでしょうか?VB.NETでCSV出力をする方法を紹介しました。

VB.NETではカンマ付与、ダブルクォーテーションを囲む処理を施し、System.IO.StreamWriterクラスでデータをファイルに書き込むことで、CSV出力をすることが可能です。

今回DataTableをCSV出力する方法を紹介しましたように、例えばフォームに表示したリストの一覧をCSV出力することなどができます。

基幹システムに登録されたデータをBIツールなどで活用する場面でもCSVは有効になりますので、VB.NETでCSVを出力する機会がありましたら、ぜひこの記事を参考にしてみてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags