我在网上找了好多的导出到Excel中js代码,都是需要使用ActiveXObject的,但要使用ActiveXObject,就必须要更改ie中的安全设置.
那样客户是不允许的.
还有,我现在做的东西,有好多的东西都不是用数据邦定控件生成的htmltable的.所以,不能用api那么导excel.
还有,我现在做的东西,有好多的页都要求有导出功能,所以只能将页面导出到excel中,不然的我每个业务,就点去画到excel中了.
还有,不想用服务端来实现.
求解决办法!

解决方案 »

  1.   

    我问你是要到处exce文件还是网页啊
    要是网页你可以用excel生成一个空的网页
    然后把数据填充上去
    ————
    新建excel另存为web,吧他的格式复制下来就行了
    下面的就是数据填充了
    要是想在web上做效果,或是到处文件,要用com来取得连接
      

  2.   

    楼主这样是的想法是不太现实的.你要不在服务器端导出EXCEL,要不在客户端调用ActiveXObject来完成.
    因为要导出EXCEL肯定要用到Office库.
      

  3.   

    顶,真的是无解吗,其实是我是想,如果ActiveXObject用的时候,不更改ie设置,不就行了.怎么才能做到啊.
      

  4.   

    你的htmltable中的数据是哪来的?
    肯定要来源一个数据源吧?
    比如来自一个DataTable,这样你就可以把这个DataTable导出到excel了
      

  5.   

     public void ExportToExcel(DataTable dt)//这里传进参数DataTable
        {
            string fileName = "****name***" + DateTime.Now.ToShortDateString();//文件的名称
            this.Response.Clear();
            this.Response.Charset = "gb2312 ";
            this.Response.ContentEncoding = System.Text.Encoding.Default;
            this.Response.ContentType = "application/vnd.ms-excel";
            this.Response.AddHeader("Pragma", "public");
            this.Response.AddHeader("Cache-Control", "max-age=0");
            this.Response.AppendHeader("content-disposition", "attachment; filename=" + HttpContext.Current.Server.UrlPathEncode(fileName) + ".xls");
            string colHeaders = "";
            string ls_item = "";
            System.IO.StringWriter stringWriter = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter htmlTextWriter = new System.Web.UI.HtmlTextWriter(stringWriter);
            this.EnableViewState = false;        if (dt != null)
            {
                // header 
                for (int i = 0; i < dt.Columns.Count - 2; i++)
                {
                    colHeaders += dt.Columns[i].Caption.ToString() + "\t ";
                }
                colHeaders += dt.Columns[dt.Columns.Count - 2].Caption.ToString() + "\n ";            Response.Write(colHeaders);            // table body
                foreach (DataRow dr in dt.Rows)
                {
                    // ID
                    ls_item += dr[0].ToString() + "\t ";
                    // digitalID
                    ls_item += dr[1].ToString() + "\t ";
                    // loginname
                    ls_item += dr[2].ToString() + "\t ";
                    // createdate
                    ls_item += dr[3].ToString() + "\t ";
                    // loginnam
                    ls_item += dr[4].ToString() + "\t ";
                    // corname
                    ls_item += dr[5].ToString() + "\t ";
                    // url
                    ls_item += dr[6].ToString() + "\t ";
                    // realname
                    ls_item += dr[7].ToString() + "\t ";
                    // tel
                    ls_item += dr[8].ToString() + "\t ";
                    // mobileno                ls_item += dr[9].ToString() + "\t ";
                    //email
                    ls_item += dr[10].ToString() + "\t ";
                    //memo
                    ls_item += dr[11].ToString() + "\t ";
                    // leaguetype                ls_item += dr[12].ToString() + "\t ";
                    // approveflag
                                                                          //输出EXcel的内容
                    ls_item += dr[13].ToString() + "\t ";
                    
                    // skeyword
                    ls_item += dr[14].ToString() + "\t ";
                    Response.Write(ls_item);                ls_item = "";            }
                this.Response.End();
            }
        }
      

  6.   

    我也在找啊。数据源是有啊,要是能有那个还提问干嘛,明显我们后台生成的前台表格样式不是规则的table赛。。
      

  7.   

    干嘛非要用ActiveXObject这个啊,一定要用js么
      

  8.   

    不用Js的话,后台方式好多种啊,一种是用数据源直接生成csv文件或excel文件,下载....
    一种是直接获取前台的htmltable,然后如下
    public void CreateExcel(string strXml)
        {
            string filename = HttpUtility.UrlEncode(DateTime.Now.ToString("yyyyMMdd-HHmm"));
            Response.AddHeader("Content-Disposition", "attachment;filename=" + filename + ".xls");
            Response.ContentType = "application/ms-excel";
            Response.ContentEncoding = Encoding.GetEncoding("GB2312");
            Response.Write(strXml);
            Response.End();
        }
      

  9.   

    我现在也是和楼主一样啊  要这样导出excel
      

  10.   

    Post方式把htmltable.innerHTML POST到一个页面,
    public void CreateExcel(string str)
      {
      string filename = HttpUtility.UrlEncode(DateTime.Now.ToString("yyyyMMdd-HHmm"));
      Response.AddHeader("Content-Disposition", "attachment;filename=" + filename + ".xls");
      Response.ContentType = "application/ms-excel";
      Response.ContentEncoding = Encoding.GetEncoding("GB2312");
      Response.Write(str);
      Response.End();
      }