[ VB.NET / C# ] データグリッドビューのデータを CSV ファイルへ出力する

Pocket

こでは、データグリッドビューのデータを 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);
    }
}
参考

 

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *