积极答复者
各位高手,我用webform的listview做了一个绑定。导出excel的时候想隐藏“删除(第7列)”、“更新(第8列)”列,在gridview中可以用gridview1.Columns[7].Visible = false;但是在listview中却没有columns这个东西,请问如何处理呢?

问题
-
#region 导出Excel public static void exp_Excel(Control gv, string title,string sheet_Name) { // 当前对话 System.Web.HttpContext curContext = System.Web.HttpContext.Current; // IO用于导出并返回excel文件 System.IO.StringWriter strWriter = null; System.Web.UI.HtmlTextWriter htmlWriter = null; if (gv != null) { // 设置编码和附件格式 HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", sheet_Name+".xls")); curContext.Response.ContentType = "application/vnd.ms-excel"; curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB18030"); curContext.Response.Charset = ""; // 导出excel文件 strWriter = new System.IO.StringWriter(); htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter); htmlWriter.WriteLine(title); // 返回客户端 gv.RenderControl(htmlWriter); curContext.Response.Write(strWriter.ToString().Replace("\r\n", "<br style='mso-data-placement:same-cell;'/> ")); curContext.Response.End(); } } #endregion protected void btn_Excel_Click(object sender, EventArgs e) { //想在这里设置lv_Hz.Columns[7].visible=false;可是listview中没有columns这个东西,请教如何处理? exp_Excel(lv_Hz, "kh","abc"); }
答案
-
你好!可以考虑重新绑定一个 ListView 用于导出,或者使用数据源的方式直接导出,如下:
<%@ Page Language="C#" AutoEventWireup="true"%> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.IO" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Button1_Click(object sender, EventArgs e) { // 生成一个测试表 DataTable dt = new DataTable(); dt.Columns.Add("Col1", typeof(Guid)); dt.Columns.Add("Col2", typeof(Guid)); while (dt.Rows.Count < 10) dt.Rows.Add(new object[] { Guid.NewGuid(), Guid.NewGuid() }); this.ExportToExcel(dt, "YourTableName.xls"); // 以字符串的方式导出 } public void ExportToExcel(DataTable fDataTable, string fFileName) { Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Response.AppendHeader("Content-Disposition", string.Format("attachment;filename={0}", fFileName)); StringBuilder builder = new StringBuilder(); String output = string.Empty; foreach (DataColumn col in fDataTable.Columns) output += (String.IsNullOrEmpty(output) ? string.Empty : "\t") + col.Caption; // 如需要改列字需要提前设置 Column.Caption builder.AppendLine(output); foreach (DataRow row in fDataTable.Rows) { output = string.Empty; foreach (DataColumn col in fDataTable.Columns) output += (String.IsNullOrEmpty(output) ? string.Empty : "\t") + row[col].ToString(); builder.AppendLine(output); } Response.Write(builder.ToString()); Response.End(); } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Export to excel demos, 20100113</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Button ID="Button1" runat="server" Text="Export To Excel" onclick="Button1_Click" /> </div> </form> </body> </html>
知识改变命运,奋斗成就人生!- 已标记为答案 杜宏宇 2010年1月13日 8:33
全部回复
-
你好!可以考虑重新绑定一个 ListView 用于导出,或者使用数据源的方式直接导出,如下:
<%@ Page Language="C#" AutoEventWireup="true"%> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.IO" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Button1_Click(object sender, EventArgs e) { // 生成一个测试表 DataTable dt = new DataTable(); dt.Columns.Add("Col1", typeof(Guid)); dt.Columns.Add("Col2", typeof(Guid)); while (dt.Rows.Count < 10) dt.Rows.Add(new object[] { Guid.NewGuid(), Guid.NewGuid() }); this.ExportToExcel(dt, "YourTableName.xls"); // 以字符串的方式导出 } public void ExportToExcel(DataTable fDataTable, string fFileName) { Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Response.AppendHeader("Content-Disposition", string.Format("attachment;filename={0}", fFileName)); StringBuilder builder = new StringBuilder(); String output = string.Empty; foreach (DataColumn col in fDataTable.Columns) output += (String.IsNullOrEmpty(output) ? string.Empty : "\t") + col.Caption; // 如需要改列字需要提前设置 Column.Caption builder.AppendLine(output); foreach (DataRow row in fDataTable.Rows) { output = string.Empty; foreach (DataColumn col in fDataTable.Columns) output += (String.IsNullOrEmpty(output) ? string.Empty : "\t") + row[col].ToString(); builder.AppendLine(output); } Response.Write(builder.ToString()); Response.End(); } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Export to excel demos, 20100113</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Button ID="Button1" runat="server" Text="Export To Excel" onclick="Button1_Click" /> </div> </form> </body> </html>
知识改变命运,奋斗成就人生!- 已标记为答案 杜宏宇 2010年1月13日 8:33