RT
html中的table是我在后台write出来的,直接写的整个table,不存在有什么runnat属性。
求助怎么能把这个table中的内容导出到excel文件。最好是能把table的合并的单元格样式也一样导出来。
cs文件中写导出或者用JS导出都可以。
急呀。。
求帮助啊
不要网上去复制粘贴网上那些都带自己的其他类的方法,然后还没有这个类 = =

解决方案 »

  1.   

     ///<summary>
            /// 导出到Excel
            ///</summary>
            protected void lbtnExport_Click(object sender, EventArgs e)
            {
                Response.Clear();
                Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
                Response.Charset = "gb2312";
                Response.ContentType = "application/vnd.xls";
                System.IO.StringWriter stringWrite = new System.IO.StringWriter();
                 if (null != ViewState["order"])
                {
                    _Order = ViewState["order"].ToString();
                }
                if (null != ViewState["Where"])
                {
                    _Where = ViewState["Where"].ToString();
                }            System.Data.DataSet dsRoles = updateProvide.Provider.GetAllExcelMang(_Where, _Order);            if (dsRoles == null || dsRoles.Tables[0].Rows.Count == 0)
                    return;            ViewState["ds"] = dsRoles.Tables[0];            System.Data.DataTable dv = (System.Data.DataTable)ViewState["ds"];
                string xls = @"<Table border='1'><TR>";
                int i;
                int j;
                for (i = 0; i < dv.Columns.Count; i++)
                {
                    xls += @"<TD>" + dv.Columns[i].Caption + @"</TD>";            }
                xls = xls + @"</TR>";
                for (i = 0; i < dv.Rows.Count; i++)
                {
                    xls = xls + @"<TR>";
                    for (j = 0; j < dv.Columns.Count; j++)
                    {
                        xls = xls + @"<TD>" + dv.Rows[i][j].ToString() + @"</TD>";
                    }
                    xls = xls + @"</TR>";
                }
                xls = xls + @"</Table>";
                Response.Write(xls);    //stringWrite.ToString());
                Response.End();
                dsRoles.Clear();
                dsRoles.Dispose();        }
      

  2.   

        //重写此事件,防止从gridview导出到excel时报错。
        public override void VerifyRenderingInServerForm(Control control)
        {
            //base.VerifyRenderingInServerForm(control);
        }
        public void Export(string FileType, string FileName)
        {
            Response.Clear();
            Response.Charset = "GB2312";
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());
            Response.ContentType = FileType;
            this.EnableViewState = false;
            System.IO.StringWriter sw = new System.IO.StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(sw);
            Repeater1.RenderControl(hw);
            //this.Page.RenderControl(hw);
            string str = hw.InnerWriter.ToString();
            Response.Write(sw.ToString());
            Response.End();
        }
      

  3.   

    能帮忙把你这方法里的
     _Order、_Where 定义还有updateProvide.Provider.GetAllExcelMang(_Where, _Order);方法也给带出来么。。
      

  4.   

    直接将table的HTML内容写入到一个文件,文件后缀为xls就可以。不过不太美观。
      

  5.   

    将你拼接的html字符串写入文本文件,文件起名xxx.xls就行了,内容只要下面这样就行:
    <table border=1>
      <tr>...</tr>
      ...
    </table>
    可以用CSS
      

  6.   

      Response.Clear();
                Response.AddHeader("content-disposition", "attachment;filename=TongJi" + Common.PublicCommon.returnTime().ToString("yyyy-MM-dd") + ".xls");
                Response.Charset = "utf-8";
                Response.ContentType = "application/vnd.xls";
                System.IO.StringWriter stringWrite = new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
                System.Web.UI.HtmlControls.HtmlTable newtable = new HtmlTable();
                newtable = (HtmlTable)this.div_tab.FindControl("Table1");
                newtable.RenderControl(htmlWrite);
                Response.Write(stringWrite.ToString());
                Response.End();