パソコンの小技・備忘録


トップページ > 小技一覧(VB.NET) > DataGridViewの内容をCSV形式で保存する。

DataGridViewの内容をCSV形式で保存する。

DataGridViewの内容をCSV形式で保存する方法です。

CSV形式にすることで、Excelで表示したり、Accessにインポートしたりといったことを簡単に行うことができます。

下記の例をそのまま使用するためには、対象となるフォームに、「sfdCsvFile」という保存ダイアログを作成しておく必要があります。

'保存したいDataGridViewコントロールの名前を引数として
'設定します。
Public Sub SaveToCsv(ByVal tempDgv As DataGridView)

  '1行もデータが無い場合は、保存を中止します。
  If tempDgv.Rows.Count = 0 Then
    Exit Sub
  End If

  '変数を定義します。
  Dim i As Integer
  Dim j As Integer
  Dim strFileName As String
  Dim strResult As New System.Text.StringBuilder

  '保存ダイアログでファイル名を設定した場合に処理を実行します。
  If Me.sfdCsvFile.ShowDialog = _
    Windows.Forms.DialogResult.OK Then

    'コラムヘッダを1行目に列記します。
    '※ヘッダ行が不要な場合は削除可能です。
    For i = 0 To tempDgv.Columns.Count - 1
      Select Case i
        Case 0
         strResult.Append("""" & _
         tempDgv.Columns(i).HeaderText.ToString & """")

        Case tempDgv.Columns.Count - 1
         strResult.Append("," & """" & _
         tempDgv.Columns(i).HeaderText.ToString & _
         """" & vbCrLf)

        Case Else
         strResult.Append("," & """" & _
         tempDgv.Columns(i).HeaderText.ToString & """")
      End Select

    Next

    'データを保存します。
    '※新規行の追加を認めている場合は、次行の
    「tempDgv.Columns.Count - 1」を
    '「tempDgv.Columns.Count - 2」としてください。
    For i = 0 To tempDgv.Rows.Count - 1
      For j = 0 To tempDgv.Columns.Count - 1
        Select Case j
          Case 0
           strResult.Append("""" & _
           tempDgv.Rows(i).Cells(j).Value.ToString & _
           """")

          Case tempDgv.Columns.Count - 1
           strResult.Append("," & """" & _
           tempDgv.Rows(i).Cells(j).Value.ToString & _
           """" & vbCrLf)

          Case Else
           strResult.Append("," & """" & _
           tempDgv.Rows(i).Cells(j).Value.ToString & _
           """")
        End Select

      Next
    Next

    'ファイル名を保存ダイアログで指定した値に設定します。
    strFileName = Me.sfdCsvFile.FileName

    'Shift-JISで保存します。
    Dim swText As New System.IO.StreamWriter(strFileName, _
      False, System.Text.Encoding.GetEncoding(932))
    swText.Write(strResult.ToString)
    swText.Dispose()

  End If

End Sub


CSVに保存すると、2次利用が簡単になりますので、なかなか便利です。

トップページに戻る

パソコンの小技・備忘録トップページ(http://pckowaza.web.fc2.com/)を表示

※更新履歴などを掲載していますので、お気に入りはぜひトップページでお願いします!

サイト内検索

 Googleでサイト内検索

小技カテゴリー

カウンタ

メール送信

 ご意見・相互リンク募集中!
意見・相互リンクメールを送信!
inserted by FC2 system