读书人

怎样在将GridView数据导出到Excel时

发布时间: 2012-05-05 17:21:10 作者: rapoo

怎样在将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语句改一下就可以了。
[解决办法]
导出时把你要的列的数据取出来重新绑定一下.然后再导
[解决办法]

探讨
赚点分真不容易

[解决办法]
C# code
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();    }
[解决办法]
探讨
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.ForeCol…

[解决办法]
导哪几列就取哪几列
[解决办法]
如果GridView存在模板列,其中包含子控件,例如CheckBox等,导出EXCEL后就会出现该区域的不规律。所以要对模板列单独处理(转载)我转的,啊哈

public void PrepareGridViewForExport(Control gv)//模式化特殊元素 flashcong

{



LinkButton lb = new LinkButton();

Literal l = new Literal();

string name = String.Empty;





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

读书人网 >asp.net

热点推荐