DOBON.NET DOBON.NETプログラミング掲示板過去ログ

datagridview(sql serverにバインド)のデータをCSVエクスポートしたい

環境/言語:[c# ,vs2010, 4]
分類:[.NET]

datagridview(sql serverにバインド)のデータをCSVエクスポートしたいです!
このようなソースでやっているのですがエラーがでます。
エラー:
System.InvalidCastException はハンドルされませんでした。
Message=型 'WindowsFormsApplication1.+++DataSet' のオブジェクトを型 'System.Data.DataTable' にキャストできません。


private void エクスポーロToolStripMenuItem_Click(object sender, EventArgs e)
{
//CSVで保存するDataTable
DataTable dt = (DataTable)+++BindingSource.DataSource;
//保存先のCSVファイルのパス
string csvPath = "C:\\test1.csv";
//CSVファイルに書き込むときに使うEncoding
System.Text.Encoding enc =
System.Text.Encoding.GetEncoding("Shift_JIS");

//開く
System.IO.StreamWriter sr =
new System.IO.StreamWriter(csvPath, false, enc);

int colCount = dt.Columns.Count;
int lastColIndex = colCount - 1;

//ヘッダを書き込む
for (int i = 0; i < colCount; i++)
{
//ヘッダの取得
string field = dt.Columns[i].Caption;
//"で囲む必要があるか調べる
if (field.IndexOf('"') > -1 ||
field.IndexOf(',') > -1 ||
field.IndexOf('\r') > -1 ||
field.IndexOf('\n') > -1 ||
field.StartsWith(" ") || field.StartsWith("\t") ||
field.EndsWith(" ") || field.EndsWith("\t"))
{
if (field.IndexOf('"') > -1)
{
//"を""とする
field = field.Replace("\"", "\"\"");
}
field = "\"" + field + "\"";
}
//フィールドを書き込む
sr.Write(field);
//カンマを書き込む
if (lastColIndex > i)
{
sr.Write(',');
}
}
//改行する
sr.Write("\r\n");

//レコードを書き込む
foreach (DataRow row in dt.Rows)
{
for (int i = 0; i < colCount; i++)
{
//フィールドの取得
string field = row[i].ToString();
//"で囲む必要があるか調べる
if (field.IndexOf('"') > -1 ||
field.IndexOf(',') > -1 ||
field.IndexOf('\r') > -1 ||
field.IndexOf('\n') > -1 ||
field.StartsWith(" ") || field.StartsWith("\t") ||
field.EndsWith(" ") || field.EndsWith("\t"))
{
if (field.IndexOf('"') > -1)
{
//"を""とする
field = field.Replace("\"", "\"\"");
}
field = "\"" + field + "\"";
}
//フィールドを書き込む
sr.Write(field);
//カンマを書き込む
if (lastColIndex > i)
{
sr.Write(',');
}
}
//改行する
sr.Write("\r\n");
}

//閉じる
sr.Close();
}
> //CSVで保存するDataTable
> DataTable dt = (DataTable)+++BindingSource.DataSource;

  ここの箇所でエラーしているのが明白で、エラー内容も
  DataTableにキャスト変換できない。とある。

  DataSource には、DataSetが渡されているので・・・
  そのDataSet中のDataTableをキャスト代入すればよい話。

  で、何が解らないのでしょうか?

以上。

DOBON.NET | プログラミング道 | プログラミング掲示板