当前位置:编程学习 > C#/ASP.NET >>

100分急!!!!!!求将网页上的htmltable导出到Excel

我在网上找了好多的导出到Excel中js代码,都是需要使用ActiveXObject的,但要使用ActiveXObject,就必须要更改ie中的安全设置.
那样客户是不允许的.
还有,我现在做的东西,有好多的东西都不是用数据邦定控件生成的htmltable的.所以,不能用api那么导excel.
还有,我现在做的东西,有好多的页都要求有导出功能,所以只能将页面导出到excel中,不然的我每个业务,就点去画到excel中了.
还有,不想用服务端来实现.
求解决办法! --------------------编程问答-------------------- 我问你是要到处exce文件还是网页啊
要是网页你可以用excel生成一个空的网页
然后把数据填充上去
————
新建excel另存为web,吧他的格式复制下来就行了
下面的就是数据填充了
要是想在web上做效果,或是到处文件,要用com来取得连接 --------------------编程问答-------------------- 楼主这样是的想法是不太现实的.你要不在服务器端导出EXCEL,要不在客户端调用ActiveXObject来完成.
因为要导出EXCEL肯定要用到Office库. --------------------编程问答-------------------- 顶,真的是无解吗,其实是我是想,如果ActiveXObject用的时候,不更改ie设置,不就行了.怎么才能做到啊. --------------------编程问答-------------------- 你的htmltable中的数据是哪来的?
肯定要来源一个数据源吧?
比如来自一个DataTable,这样你就可以把这个DataTable导出到excel了 --------------------编程问答--------------------  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();
        }
    } --------------------编程问答-------------------- 学习 up --------------------编程问答-------------------- 帮顶!!! --------------------编程问答-------------------- 5楼的可行 --------------------编程问答-------------------- 我也在找啊。。。。数据源是有啊,要是能有那个还提问干嘛,明显我们后台生成的前台表格样式不是规则的table赛。。 --------------------编程问答-------------------- 干嘛非要用ActiveXObject这个啊,一定要用js么 --------------------编程问答-------------------- --------------------编程问答-------------------- 不用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();
    }
--------------------编程问答-------------------- 我现在也是和楼主一样啊  要这样导出excel --------------------编程问答-------------------- 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();
  }
--------------------编程问答-------------------- 这个能满足你的需求 --------------------编程问答-------------------- 总结:用后台代码生成你需要的输出流,供客户下载 --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,