ASP.Net 2.0にgridviewコントロールがあり、このgridviewデータをCSVファイルにエクスポートする必要があります。
このグリッドビューをデータセットにバインドしました。データセットをグリッドビューにバインドした後、グリッドビューデータにいくつかの変更を加えました。次に、グリッドビューで「未開始」として1を表示します。
したがって、エクスポートに直接データセットを使用することはできません。必要なものは..グリッドビューデータ(データセットのデータではない)をCSVファイルにエクスポートする(c#の)コードが必要です。
次のコードを試してください、私はすでに何度もそれを使用しました。データをgridviewからコードで指定されたcsvファイルに直接エクスポートします。
protected void btnExportCSV_Click(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition",
"attachment;filename=GridViewExport.csv");
Response.Charset = "";
Response.ContentType = "application/text";
GridView1.AllowPaging = false;
GridView1.DataBind();
StringBuilder sb = new StringBuilder();
for (int k = 0; k < GridView1.Columns.Count; k++)
{
//add separator
sb.Append(GridView1.Columns[k].HeaderText + ',');
}
//append new line
sb.Append("\r\n");
for (int i = 0; i < GridView1.Rows.Count; i++)
{
for (int k = 0; k < GridView1.Columns.Count; k++)
{
//add separator
sb.Append(GridView1.Rows[i].Cells[k].Text + ',');
}
//append new line
sb.Append("\r\n");
}
Response.Output.Write(sb.ToString());
Response.Flush();
Response.End();
}
詳細については ここ をご覧ください。
AutoGenerateColumns = trueとAllowSorting = trueを持つグリッドビューで動作するように変更した良い答えを提供してくれたDevjoshに最初に感謝します。さらに、csvファイルが破損していないことを確認するために、データから返されたカンマをすべて取り除きました。
private void ExportReport()
{
// set the resulting file attachment name to the name of the report...
string fileName = "test";
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=" + fileName + ".csv");
Response.Charset = "";
Response.ContentType = "application/text";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
// Get the header row text form the sortable columns
LinkButton headerLink = new LinkButton();
string headerText = string.Empty;
for (int k = 0; k < gvReport.HeaderRow.Cells.Count; k++)
{
//add separator
headerLink = gvReport.HeaderRow.Cells[k].Controls[0] as LinkButton;
headerText = headerLink.Text;
sb.Append(headerText + ",");
}
//append new line
sb.Append("\r\n");
for (int i = 0; i < gvReport.Rows.Count; i++)
{
for (int k = 0; k < gvReport.HeaderRow.Cells.Count; k++)
{
//add separator and strip "," values from returned content...
sb.Append(gvReport.Rows[i].Cells[k].Text.Replace(",", "") + ",");
}
//append new line
sb.Append("\r\n");
}
Response.Output.Write(sb.ToString());
Response.Flush();
Response.End();
}