'保存したい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
|
|