解决方案 »

  1.   

    你这是什么用法...
    不要自己胡乱发明啊
    你到底是生成html页下载,还是以txt文件的格式导出
    不要混用啊
      

  2.   

    你查:
    导出excel
    代码一堆一堆的
    不过不管你用html还是txt,导出来都不是真正的excel,打开时会报错
    而且也没法进行excel单元格的详细设置,比如合并单元格,修改字体颜色什么的
    想导出的好看,还是用NPOI吧
      

  3.   


            System.Web.UI.WebControls.GridView dataGrid = new System.Web.UI.WebControls.GridView();
            dataGrid.DataSource = dt.DefaultView;
            dataGrid.AllowPaging = false;
            dataGrid.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
            dataGrid.HeaderStyle.Font.Bold = true;
            dataGrid.DataBind();        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("人员出现场统计", System.Text.Encoding.UTF8) + ".xls");
            HttpContext.Current.Response.Charset = "UTF-8";
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
            HttpContext.Current.Response.ContentType = "application/ms-excel";        dataGrid.EnableViewState = false;
            dataGrid.AutoGenerateColumns = true;
            System.IO.StringWriter tw = new System.IO.StringWriter();        System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
            dataGrid.RenderControl(hw);        HttpContext.Current.Response.Write(tw.ToString());
            HttpContext.Current.Response.End();
      

  4.   

    你要是想导出的列标题是中文
    就在导出前,修改一下dt的columnName
      

  5.   

    在使用  Response.AddHeader("Content-Disposition", "attachment; filename=report.xls");
    这句之前有没有对Response的Header再做什么操作?
      

  6.   

    在使用  Response.AddHeader("Content-Disposition", "attachment; filename=report.xls");
    这句之前应该是有response.flush操作
      

  7.   

    你要说明你在调用  ExportToExcel 之前都干了什么事儿。
      

  8.   

    private void ExportToExcel(DataTable DT)
            { 
                StringWriter sw = new StringWriter();
                StringBuilder sb = new StringBuilder();
                foreach (DataColumn DC in DT.Columns)
                {
                    if (!String.IsNullOrEmpty(DC.Caption))
                    {
                        sb.Append("\t" + DC.Caption);
                    }
                }
                if (sb.Length > 0)
                {
                    sw.WriteLine(sb.ToString().Substring(1));                foreach (DataRow Dr in DT.Rows)
                    {
                        sb = new StringBuilder();
                        foreach (DataColumn DC in DT.Columns)
                        {
                            if (!String.IsNullOrEmpty(DC.Caption))
                            {
                                sb.Append("\t" + Dr[DC].ToString());
                            }
                        }
                        sw.WriteLine(sb.ToString().Substring(1));
                    }
                }            //sw.Close();
                //DT.Clear();
                //DT.Dispose(); 
                Response.AddHeader("Content-Disposition", "attachment; filename=report.xls");
                Response.ContentType = "application/ms-excel";
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                Response.Write(sw);
                Response.End();
            }
           
            protected void Button1_Click1(object sender, EventArgs e)
            {
                if (string.IsNullOrEmpty(Request.QueryString["id"]))
                {
                    ExportToExcel(ToOutExcel(null));
                    //ExcelHelper eh = new ExcelHelper();
                    //eh.DataTableToOfficeExcel(ToOutExcel(null), 1,1);
                }
                else
                {
                    string id = Request.QueryString["id"].ToString();                ExportToExcel(ToOutExcel(id));
                }
            }我什么都没做就导出
      

  9.   


    那你在调用  ExportToExcel 方法之前写了什么代码?能贴出来吗?
      

  10.   

    代码里加这个方法了没?  public override void VerifyRenderingInServerForm(Control control)
            {
            }      
      

  11.   

         private void DataTable2Excel(System.Data.DataTable dtData, String FileName)
            {            //当前对话 
                System.Web.HttpContext curContext = System.Web.HttpContext.Current;
                //IO用于导出并返回excel文件 
                System.IO.StringWriter strWriter = null;
                System.Web.UI.HtmlTextWriter htmlWriter = null;            if (dtData != null)
                {
                    //设置编码和附件格式 
                    //System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8)作用是方式中文文件名乱码 
                    curContext.Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls");
                    curContext.Response.ContentType = "application nd.ms-excel";
                    curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
                    curContext.Response.Charset = "GB2312";                //导出Excel文件 
                    strWriter = new System.IO.StringWriter();
                    htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);                //为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的GridView 
                    gvExport.DataSource = dtData.DefaultView;
                    gvExport.AllowPaging = false;
                    gvExport.DataBind();                //下载到客户端 
                    gvExport.RenderControl(htmlWriter);
                    curContext.Response.Write(strWriter.ToString());
                    curContext.Response.End();
                }
            }
            public override void VerifyRenderingInServerForm(Control control)
            {
            }