DOBON.NETプログラミング掲示板過去ログ
datagridview(sql serverにバインド)のデータをCSVエクスポートしたい
題名: datagridview(sql serverにバインド)のデータをCSVエクスポートしたい
著者: RRR
日時: 2012/11/21 11:44:19
ID: 31133
この記事の返信元:
(なし)
この記事への返信:
[31134]
Re[1]: datagridview(sql serverにバインド)のデータをCSVエクスポートしたい
オショウ
2012/11/23 10:48:12
ツリーを表示
環境/言語:[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();
}
題名: Re[1]: datagridview(sql serverにバインド)のデータをCSVエクスポートしたい
著者: オショウ
日時: 2012/11/23 10:48:12
ID: 31134
この記事の返信元:
[31133]
datagridview(sql serverにバインド)のデータをCSVエクスポートしたい
RRR
2012/11/21 11:44:19
この記事への返信:
(なし)
ツリーを表示
> //CSVで保存するDataTable
> DataTable dt = (DataTable)+++BindingSource.DataSource;
ここの箇所でエラーしているのが明白で、エラー内容も
DataTableにキャスト変換できない。とある。
DataSource には、DataSetが渡されているので・・・
そのDataSet中のDataTableをキャスト代入すればよい話。
で、何が解らないのでしょうか?
以上。
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.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();
}