![](https://blogimg.goo.ne.jp/user_image/01/81/ca9eb9ab1e5814840c89e662fd21e740.png)
以前に CSV ファイルの読み込みについて書きました。
【VB.NET】 CSV ファイルの読み込みはこんなに簡単・・・ TextFieldParser
今回はその逆。
CSV ファイルへの書き出し、エクスポートです。
拙作 WULF2 で使っている実際のコードをご紹介します。
DataGridView 内のデータを CSV ファイルに書き出しています。
CSV ファイルの1行目は列名、2行目以降がデータとして書き出しています。
# タブ区切りにするなら、カンマを付加している部分を置き換えてください。
# If 文で済むのに Select 文にしたりしています(オヤヂ的読みやすさのため)。
変数名やコメントの表記もオヤヂ固有のものなので、適当に直してください。
# この記事用に TAB は全角スペースに置き換えています。
コピペして再利用される場合は、適当に直してください。
' --- prc_Export_CSV で使う変数 ----
' Private ExportFileName As String ' -- 出力するファイル名(パス付き)
' Private TextFile As IO.StreamWriter ' -- 出力するファイル
' Private TextLine As String ' -- 書き出す1行
' Private cellData As String ' -- セルのデータ(カンマ除去用)
' ----------------------------------
' --- CSV 形式でのエクスポート(dgv_export をエクスポート)UTF-8 使用
Private Sub prc_Export_CSV()
' --- ファイルのインスタンスを作る(既存ファイルは上書き、エンコードは UTF8)
Me.TextFile = New IO.StreamWriter(Me.ExportFileName, False, System.Text.Encoding.UTF8)
' --- 列見出しを書き出す
Me.TextLine = ""
' --- 1行目(列見出し)を書き出す
For myCol As Integer = 0 To Me.dgv_Export.ColumnCount - 1
If myCol = Me.dgv_Export.ColumnCount - 1 Then
' -- 最終列ならカンマを付けない
Me.TextLine += Replace(Me.dgv_Export.Columns(myCol).Name, "Exp_", "")
Else
' -- 途中の列には項目の後にカンマを付加
Me.TextLine += Replace(Me.dgv_Export.Columns(myCol).Name, "Exp_", "") & ","
End If
Next
' -- 終端文字付きで1行を書き出す
Me.TextFile.WriteLine(Me.TextLine)
' --- セルのデータを書き出す
For myRow As Integer = 0 To Me.dgv_Export.RowCount - 1
Me.TextLine = ""
For myCol As Integer = 0 To Me.dgv_Export.ColumnCount - 1
If IsDBNull(Me.dgv_Export.Item(myCol, myRow).Value) Then
Me.cellData = ""
Else
Me.cellData = Me.dgv_Export.Item(myCol, myRow).Value
' -- データ中のカンマを除去
Me.cellData = Replace(Me.cellData, ",", "")
End If
Select Case myCol
Case Is = Me.dgv_Export.ColumnCount - 1
' -- 最終列ならカンマを付けない
Me.TextLine += Me.cellData
Case Else
' -- 項目の後にカンマを付加する
Me.TextLine += Me.cellData & ","
End Select
Next
' -- 終端文字付きで1行を書き出す
Me.TextFile.WriteLine(Me.TextLine)
Next
' --- 後始末:StreamWriter を閉じる、解放する
Me.TextFile.Close()
Me.TextFile.Dispose()
End Sub
ブログ記事についてのお問い合わせは「質疑応答 掲示板」で・・・
![](https://blogimg.goo.ne.jp/user_image/74/f8/4c92568b05b542c5adef7ac20a148706.png)
ここをクリックして、北窓舎のサイトにもお立ち寄りください・・・
【VB.NET】 CSV ファイルの読み込みはこんなに簡単・・・ TextFieldParser
今回はその逆。
CSV ファイルへの書き出し、エクスポートです。
拙作 WULF2 で使っている実際のコードをご紹介します。
DataGridView 内のデータを CSV ファイルに書き出しています。
CSV ファイルの1行目は列名、2行目以降がデータとして書き出しています。
# タブ区切りにするなら、カンマを付加している部分を置き換えてください。
# If 文で済むのに Select 文にしたりしています(オヤヂ的読みやすさのため)。
変数名やコメントの表記もオヤヂ固有のものなので、適当に直してください。
# この記事用に TAB は全角スペースに置き換えています。
コピペして再利用される場合は、適当に直してください。
' --- prc_Export_CSV で使う変数 ----
' Private ExportFileName As String ' -- 出力するファイル名(パス付き)
' Private TextFile As IO.StreamWriter ' -- 出力するファイル
' Private TextLine As String ' -- 書き出す1行
' Private cellData As String ' -- セルのデータ(カンマ除去用)
' ----------------------------------
' --- CSV 形式でのエクスポート(dgv_export をエクスポート)UTF-8 使用
Private Sub prc_Export_CSV()
' --- ファイルのインスタンスを作る(既存ファイルは上書き、エンコードは UTF8)
Me.TextFile = New IO.StreamWriter(Me.ExportFileName, False, System.Text.Encoding.UTF8)
' --- 列見出しを書き出す
Me.TextLine = ""
' --- 1行目(列見出し)を書き出す
For myCol As Integer = 0 To Me.dgv_Export.ColumnCount - 1
If myCol = Me.dgv_Export.ColumnCount - 1 Then
' -- 最終列ならカンマを付けない
Me.TextLine += Replace(Me.dgv_Export.Columns(myCol).Name, "Exp_", "")
Else
' -- 途中の列には項目の後にカンマを付加
Me.TextLine += Replace(Me.dgv_Export.Columns(myCol).Name, "Exp_", "") & ","
End If
Next
' -- 終端文字付きで1行を書き出す
Me.TextFile.WriteLine(Me.TextLine)
' --- セルのデータを書き出す
For myRow As Integer = 0 To Me.dgv_Export.RowCount - 1
Me.TextLine = ""
For myCol As Integer = 0 To Me.dgv_Export.ColumnCount - 1
If IsDBNull(Me.dgv_Export.Item(myCol, myRow).Value) Then
Me.cellData = ""
Else
Me.cellData = Me.dgv_Export.Item(myCol, myRow).Value
' -- データ中のカンマを除去
Me.cellData = Replace(Me.cellData, ",", "")
End If
Select Case myCol
Case Is = Me.dgv_Export.ColumnCount - 1
' -- 最終列ならカンマを付けない
Me.TextLine += Me.cellData
Case Else
' -- 項目の後にカンマを付加する
Me.TextLine += Me.cellData & ","
End Select
Next
' -- 終端文字付きで1行を書き出す
Me.TextFile.WriteLine(Me.TextLine)
Next
' --- 後始末:StreamWriter を閉じる、解放する
Me.TextFile.Close()
Me.TextFile.Dispose()
End Sub
ブログ記事についてのお問い合わせは「質疑応答 掲示板」で・・・
![](https://blogimg.goo.ne.jp/user_image/74/f8/4c92568b05b542c5adef7ac20a148706.png)
ここをクリックして、北窓舎のサイトにもお立ち寄りください・・・