不使用Streamwriter将数据网格视图导出到Excel [英] Export Data Grid View Data To Excel Without Using Streamwriter
本文介绍了不使用Streamwriter将数据网格视图导出到Excel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Plz,建议我如何将datagridview数据导出到excel
shout删除[/ EDIT]
Plz, suggest me how to export datagridview data to excel
Shout removed[/EDIT]
推荐答案
点击要从gridview生成excel表格的按钮,使用gridview作为参数调用此函数,例如
Onclick of the button on which you want to generate excel sheet from gridview,call this function with gridview as parameter,e.g.
GenerateExcel(Your gridview here)
然后,实现以下两个函数。
Then,implement below two functions.
public static void GenerateExcel(GridView gv)
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=Leave_Report.xls");
HttpContext.Current.Response.ContentType = "application/ms-excel";
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter htw = new HtmlTextWriter(sw))
{
// Create a table to contain the grid
Table table = new Table();
// include the gridline settings
table.GridLines = gv.GridLines;
// add the header row to the table
if (gv.HeaderRow != null)
{
PrepareControlForExport(gv.HeaderRow);
table.Rows.Add(gv.HeaderRow);
}
//Make Header Coloruful
for (int j = 0; j < gv.Columns.Count; j++)
{
//Apply style to Individual Cells
gv.HeaderRow.Cells[j].Style.Add("background-color", "#4DB4EE");
}
// add each of the data rows to the table
foreach (GridViewRow row in gv.Rows)
{
PrepareControlForExport(row);
table.Rows.Add(row);
}
// add the footer row to the table
if (gv.FooterRow != null)
{
PrepareControlForExport(gv.FooterRow);
table.Rows.Add(gv.FooterRow);
}
// render the table into the htmlwriter
table.RenderControl(htw);
// render the htmlwriter into the response
HttpContext.Current.Response.Write(sw.ToString());
HttpContext.Current.Response.End();
}
}
}
private static void PrepareControlForExport(Control control)
{
for (int i = 0; i < control.Controls.Count; i++)
{
Control current = control.Controls[i];
if (current is LinkButton)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text));
}
else if (current is ImageButton)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText));
}
else if (current is HyperLink)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text));
}
else if (current is DropDownList)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text));
}
else if (current is CheckBox)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False"));
}
if (current.HasControls())
{
PrepareControlForExport(current);
}
}
}
这篇关于不使用Streamwriter将数据网格视图导出到Excel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文