怎样在将GridView数据导出到Excel时,指定列导出?
怎样在将GridView数据导出到Excel时,导出自己需要的列?
[解决办法]
protected void export_Click(object sender, EventArgs e)
{
int i = 0;
if (this.MachineList.Rows.Count == 0)
{
Response.Write("<script>alert('没有查找到数据,无法导出!')</script>");
}
else
{
///隐藏部分列,不予导出
this.MachineList.Columns[9].Visible = false;
this.MachineList.Columns[8].Visible = false;
this.MachineList.Columns[7].Visible = true;
this.MachineList.HeaderStyle.ForeColor = Color.Black;
///处理表头自动排序的超链接
while (i < MachineList.Columns.Count)
{
MachineList.Columns[i].SortExpression = "";
i++;
}
this.MachineList.AllowPaging = false; // 将有分页的GridView中的数据全部导出到Excel
Bind();
Export("application/ms-excel", "设备信息.xls");
// 换成 Export("application/ms-word", "设备信息.doc"); 那么导出的就是Word格式的了.
this.MachineList.AllowPaging = true;
Bind();
}
}
[解决办法]
查询到dataTable,再由datatable导出到Excel效率高
只要对SQL语句改一下就可以了。
[解决办法]
导出时把你要的列的数据取出来重新绑定一下.然后再导
[解决办法]
public void ExportToExcel(string Filename, GridView gridview, Page page) { gridview.EnableViewState = false; gridview.AllowSorting = false; gridview.AllowPaging = false; //在这里把你不要的字段隐藏 DataTable temp = 这里的datatable是所有的数据,你取出来赋给temp gridview.DataSource = temp;//重新绑定所有数据 gridview.DataBind(); page.Response.Clear(); page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8"); page.Response.AppendHeader("content-disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(Filename + DateTime.Now.ToShortDateString(), System.Text.Encoding.UTF8) + ".xls\""); System.IO.StringWriter sw = new System.IO.StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); gridview.RenderControl(htw); page.Response.Write(sw.ToString()); page.Response.End(); }
[解决办法]
for (int i = 0; i < gv.Controls.Count; i++)
{
if (gv.Controls[i].GetType() == typeof(LinkButton))
{
l.Text = (gv.Controls[i] as LinkButton).Text;
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l);
}
else if (gv.Controls[i].GetType() == typeof(DropDownList))
{
l.Text = (gv.Controls[i] as DropDownList).SelectedItem.Text;
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l);
}
else if (gv.Controls[i].GetType() == typeof(CheckBox))
{
l.Text = (gv.Controls[i] as CheckBox).Checked ? "True" : "False";
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l);
}
else if (gv.Controls[i].GetType() == typeof(ImageButton))
{
l.Text = "图片";
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l);
}
if (gv.Controls[i].HasControls())
{
PrepareGridViewForExport(gv.Controls[i]);
}
}
}
[解决办法]
mark