交gridview中的数据导入EXCEL,GridView中的空格都是 ,导入EXCEL时空格都成了&NBSP,怎么解决一下。

解决方案 »

  1.   


    解决方案:页面增加一个按钮,单击事件添加如下方法:protected void Button1_Click(object sender, EventArgs e)    {        Export("application/ms-excel", "学生成绩报表.xls");    }
        private void Export(string FileType, string FileName)    {        Response.Charset = "GB2312";        Response.ContentEncoding = System.Text.Encoding.UTF7;        Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());        Response.ContentType = FileType;        this.EnableViewState = false;        StringWriter tw = new StringWriter();        HtmlTextWriter hw = new HtmlTextWriter(tw);        GridView1.RenderControl(hw);        Response.Write(tw.ToString());        Response.End();    }//如果没有下面方法会报错类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内    public override void VerifyRenderingInServerForm(Control control)    {    }还有由于是文件操作所以要引入名称空间IO和Text
      

  2.   

        private void Export(string FileType, string FileName)
        {
            //以下三行可选,如果没有的话导出的只是当前页数据,没有其他页数据 
            GridView1.AllowPaging = false;
            GridView1.AllowSorting = false;        
            ///gridviewdatabind(); //这里是绑定gridview的方法
            Response.Charset = "GB2312";
            Response.ContentEncoding = System.Text.Encoding.UTF7;
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());
            Response.ContentType = FileType;
            this.EnableViewState = false;
            StringWriter tw = new StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(tw);
            GridView1.RenderControl(hw);
            Response.Write(tw.ToString());
            Response.End();
        }
    可以实现,不过有个问题是 18位的字符数(例如订单编号 2010072109330001 和身份证号130637198501020039 )的数据会变成 4.32154E+17  ,如果改为数字格式 则成 2010072109330000 和 130637198501020000  谁能解决 ?
      

  3.   

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;using System.Data.SqlClient;
    using System.IO;
    using System.Text;public partial class _Default : System.Web.UI.Page 
    {
        SqlConnection sqlcon;
        string strCon = "Data Source=(local);Database=wxd;Uid=sa;Pwd=";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                bind();
            }
        }
        //绑定GridView
        public void bind()
        {
            string sqlstr = "select  * from Admin";
            sqlcon = new SqlConnection(strCon);
            SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
            DataSet myds = new DataSet();
            sqlcon.Open();
            myda.Fill(myds, "Admin");
            GridView1.DataSource = myds;
            GridView1.DataBind();
        }
        //导出Excel
        protected void Button1_Click(object sender, EventArgs e)
        {
            Export("application/ms-excel", "学生成绩报表.xls");
        }
        //导出Excel函数
        private void Export(string FileType, string FileName)
        {
            Response.Charset = "GB2312";
            Response.ContentEncoding = System.Text.Encoding.UTF7;
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
            Response.ContentType = FileType;
            this.EnableViewState = false;
            StringWriter tw = new StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(tw);
            GridView1.RenderControl(hw);
            Response.Write(tw.ToString());
            Response.End();
        }
        //导出方法,必须有!!!!!!!!
        public override void VerifyRenderingInServerForm(Control control)
        {
        }
        //导出Word
        protected void Button2_Click(object sender, EventArgs e)
        {
            Export("application/ms-word", "员工信息.doc");
        }
    }
      

  4.   

    我遇到的问题是反过来的。我用datagrid的RenderControl方法导出excel。以前没有对特殊字符进行处理。空倒出来以后还是空。加入特殊字符处理后,原来的空变成了 了,但是我没有对空格变换数据啊。
    特殊字符的处理办法是:循环grid行和列。去除单元格tablecell。tablecess.text.replace("&","&")等。