こでは、データグリッドビューのデータを CSV ファイルへ出力するサンプルコードを掲載しています。詳細はコメントを参照いただければと思いますが、データグリッドビューがユーザーによる行追加が許可されているか否かで行数の判断をしなければいけない点が ポイントです。
スポンサーリンク
VB.NET
'保存用のファイルを開く
Using writer As New StreamWriter("E:\test2.csv", False, Encoding.GetEncoding("shift_jis"))
Dim rowCount As Integer = DataGridView1.Rows.Count
' ユーザによる行追加が許可されている場合は、最後の新規入力用の
' 1行分を差し引く
If (DataGridView1.AllowUserToAddRows = True) Then
rowCount = rowCount - 1
End If
' 行
For i As Integer = 0 To rowCount - 1
' リストの初期化
Dim strList As New List(Of String)
' 列
For j As Integer = 0 To DataGridView1.Columns.Count - 1
strList.Add(DataGridView1(j, i).Value.ToString())
Next
Dim strArray As String() = strList.ToArray() ' 配列へ変換
' CSV 形式に変換
Dim strCsvData As String = String.Join(",", strArray)
writer.WriteLine(strCsvData)
Next
End Using
c#
// using System.IO;
// 保存用のファイルを開く
using( StreamWriter writer = new StreamWriter(@"E:\test2.csv", false, Encoding.GetEncoding("shift_jis"))) {
int rowCount = dataGridView1.Rows.Count;
// ユーザによる行追加が許可されている場合は、最後の新規入力用の
// 1行分を差し引く
if (dataGridView1.AllowUserToAddRows == true) {
rowCount = rowCount - 1;
}
// 行
for(int i = 0; i<rowCount; i++) {
// リストの初期化
List<String> strList = new List<String>();
// 列
for (int j = 0; j < dataGridView1.Columns.Count; j++) {
strList.Add(dataGridView1[j, i].Value.ToString());
}
String[] strArray = strList.ToArray(); // 配列へ変換
// CSV 形式に変換
String strCsvData = String.Join(",", strArray);
writer.WriteLine(strCsvData);
}
}
参考