fc2ブログ

トップ  >  サンプルソース  >  DataGridView CSV出力(C#/VB.NET)

DataGridView CSV出力(C#/VB.NET)

2010年01月27日

DataGridViewをCSVファイルに出力(保存)するメソッドを追加するサンプル(ソース/コード)です。こちらの DataGridViewに便利なメソッドを追加するサンプル にメソッドを追加してお試し頂けます。VS-FlexGrid等にはCSV出力機能が付いているのでDataGridViewにもCSV出力機能が欲しいと思います。少し修正すればこのサンプルだけで使用出来ます。

DataGridViewに便利なメソッドを追加するその他のサンプルはこちらです。
DataGridView EXCEL読込(C#/VB.NET)
DataGridView EXCEL出力(C#/VB.NET)
DataGridView CSV読込(C#/VB.NET)
DataGridView HTML出力(C#/VB.NET)
DataGridView その他のサンプルソース

' -----------------------------------------------------------
' DataGridViewをCSV出力するサンプル(VB.NET/VS2005)
Public Sub SaveCsv(ByVal fp As String)
    ' CSVファイルオープン
    Dim sw As IO.StreamWriter = _
        New IO.StreamWriter(fp, False, _
        System.Text.Encoding.GetEncoding("SHIFT-JIS"))
    For r As Integer = 0 To Me.Rows.Count - 1
        For c As Integer = 0 To Me.Columns.Count - 1
            ' DataGridViewのセルのデータ取得
            Dim dt As String = ""
            If Me.Rows(r).Cells(c).Value _
                Is Nothing = False Then
                dt = Me.Rows(r).Cells(c).Value.ToString()
            End If
            If c < Me.Columns.Count - 1 Then
                dt = dt & ","
            End If
            ' CSVファイル書込
            sw.Write(dt)
        Next
        sw.Write(vbCrLf)
    Next
    ' CSVファイルクローズ
    sw.Close()
End Sub
' -----------------------------------------------------------

// ----------------------------------------------------------
// DataGridViewをCSV出力するサンプル(C#.NET/VS2005)
public void SaveCsv(String fp)
{
    // CSVファイルオープン
    StreamWriter sw =
        new StreamWriter(fp, false,
        System.Text.Encoding.GetEncoding("SHIFT-JIS"));
    for (int r = 0; r <= this.Rows.Count - 1; r++)
    {
        for (int c = 0; c <= this.Columns.Count - 1; c++)
        {
            // DataGridViewのセルのデータ取得
            String dt = "";
            if (this.Rows[r].Cells[c].Value != null)
            {
                dt = this.Rows[r].Cells[c].Value.
                    ToString();
            }
            if (c < this.Columns.Count - 1)
            {
                dt = dt + ",";
            }
            // CSVファイル書込
            sw.Write(dt);
        }
        sw.Write("\n");
    }
    // CSVファイルクローズ
    sw.Close();
}
// ----------------------------------------------------------

ハードコピー(C#/VB.NET) | トップページへ戻る | とりあえず理系ですが

このページのトップに戻る

コメント

参考までに

記載されているコードではstring変数が大量(セル数*3個)に作られてしまいパフォーマンス的に非常に不利です。
私も必要があって同様のコードを作成しましたので参考までに掲載します。

//---------------- 以下は引用 -----------------------
文字列は、テキストを表現するために使用される Unicode 文字のシーケンシャル コレクションです。String オブジェクトは、文字列を表す System.Char オブジェクトのシーケンシャル コレクションです。String オブジェクトの値はシーケンシャル コレクションの内容であり、この値は変更できません。

参考URL;http://msdn.microsoft.com/ja-jp/library/system.string(v=vs.80).aspx

using (StreamWriter sw = new StreamWriter(dlg.FileName, false, System.Text.Encoding.GetEncoding("SHIFT-JIS")))
{
for (int r = 0; r < grid.Rows.Count; r++)
{
StringBuilder dt = new StringBuilder(); //<- コンストラクタ引数は環境により適宜設定
for (int c = 0; c < grid.Columns.Count; c++)
{
if (grid[c, r].Value != null)
dt.Append(grid[c, r].Value.ToString());

if (c < grid.Columns.Count - 1)
dt.Append(",");
}
sw.Write(dt.ToString() + System.Environment.NewLine);
}
}

以上。

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

名前
題名
メールアドレス
WEBサイト
 
コメント
パスワード
  管理者にだけ表示を許可する

このページのトップに戻る

トラックバック

このページのトップに戻る