Gridview导出成Excel 有些列我不想要,该怎么弄?谢谢!!
Gridview导出成Excel 有些列我不想要,该怎么弄?谢谢!!
下面的是导出成excel的源代码:
//---------------------------
private void ToExcel(Control ctl, string FileName)
{
HttpContext.Current.Response.Charset = "UTF-8 ";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
HttpContext.Current.Response.ContentType = "application/ms-excel ";
HttpContext.Current.Response.AppendHeader( "Content-Disposition ", "attachment;filename= " + " " + FileName);
ctl.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
//---------------------------
现在可以导出成excel但有些列我不想要,该怎么做呢?
还有问各位这三行代码是什么意思,多谢!!
ctl.Page.EnableViewState = false;
HtmlTextWriter hw = new HtmlTextWriter(tw);
ctl.RenderControl(hw);
[解决办法]
void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
//让索引为0的列不可见,实际上是产生的css代码
e.Row.Cells[0].Visible = false;
//other code if neccecary
}
[解决办法]
这样导出时候就没有了
[解决办法]
这样岂不是要去重新读一次数据库?
[解决办法]
我们用到导出的部分代码
protected void btnExport_Click(object sender, EventArgs e)
{
GridView1.AllowPaging = false;//不允许分页,这样可以把所有的记录得到
GridView1.DataBind();//重新绑定一下
GridView1.Columns[GridView1.Columns.Count - 1].Visible = false;//隐藏倒数1列
GridView1.Columns[GridView1.Columns.Count - 2].Visible = false;//隐藏倒数2列
ExportToExcel();//导出处理,和你上面的一样
GridView1.AllowPaging = true;//还原成允许分页
GridView1.DataBind();//重新绑定一下
}
[解决办法]
这样岂不是要去重新读一次数据库?
--------------------------------------------
很多时候为了实现功能就要牺牲点效率,在数据量不是很大的情况下还是没有问题的
------解决方案--------------------
有没有具体点的说明啊 ?
[解决办法]
Excel自定义导出,不过比较麻烦
[解决办法]
这样岂不是要去重新读一次数据库?=======> 因为要重新绑定,所以是必须的.
[解决办法]
我觉得建两张GV比较好,需要导出的一张把他的是否可见显示为false 把不需要的列隐藏掉不就可以了么?
[解决办法]
use Interop.Excel.dll
[解决办法]
直接填充datatable里开始导最好.想要哪些就哪些.
DataTable dt=ds.Tables[ "table1 "];
string name=System.Configuration.ConfigurationSettings.AppSettings[ "downloadurl "].ToString()+DateTime.Today.ToString( "yyyyMMdd ")+new Random(DateTime.Now.Millisecond).Next(10000).ToString()+ ".csv FileStream fs=new FileStream(name,FileMode.Create,FileAccess.Write);
StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding( "gb2312 "));
sw.WriteLine( "帐单号,状态,结算单位,应收,已收,待收,RMB,USD,开航日,挂号部门 ");
foreach(DataRow dr in dt.Rows)
{
sw.WriteLine(dr[ "InvoiceNo "]+ ", "+dr[ "status "]+ ", "+dr[ "CompanyName "]+ ", "+dr[ "Amount "]+ ", "dr[ "AmountPayed "]+ ", "dr[ "AmountNeed "]+ ", "dr[ "RMB "]+ ", "+dr[ "USD "]+ ", "dr[ "BillNo "]+ ", "dr[ "SpGroup "]);
}
sw.Close();
Response.AddHeader( "Content-Disposition ", "attachment; filename= " + Server.UrlEncode(name));
Response.ContentType = "application/ms-excel ";
Response.WriteFile(name); Response.End();
[解决办法]
antiking(Q狼E行-吹雪留香一点红,孤城寻欢花满楼) ( ) 信誉:92 Blog 加为好友 2007-04-28 16:49:04 得分: 0
直接填充datatable里开始导最好.想要哪些就哪些.
顶!!!不用读数据库。
[解决办法]
隐藏掉不用的列就行了