有如下一个大字符串:
<div>\r\n\t<table class=\"datatable3\" cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"gvResult\" style=\"width:100%;border-collapse:collapse;\">\r\n\t\t
<tr>\r\n\t\t\t<th scope=\"col\">F_ID</th>
<th scope=\"col\">F_Name</th>\r\n\t\t</tr><tr>\r\n\t\t\t
<td>4</td>
<td>金线(女娲补天_维护)</td>\r\n\t\t
</tr><tr style=\"background-color:#F4F9FD;\">\r\n\t\t\t
<td>5</td>
<td>金线(女娲补天)</td>\r\n\t\t
</tr><tr>\r\n\t\t\t
<td>8</td>
<td>木线(女娲补天)</td>\r\n\t\t
</tr><tr style=\"background-color:#F4F9FD;\">\r\n\t\t\t
<td>9</td>
<td>木线(女娲补天_维护)</td>\r\n\t\t
</tr><tr>\r\n\t\t\t
<td>10</td>
<td>水线(女娲补天)</td>\r\n\t\t
</tr>\r\n\t
</table>\r\n
</div>如何把这个大字符串转化,并存入一个dataset或者datatable主要是导出Excel用,想导出当前页的内容,所以想把当前页的html文本转化成一个dataset,这样我就可以直接导出了

解决方案 »

  1.   

    这是读到的当前页面的数据,但是是html格式的,想导出Excel,所以想把这段存入一个dataset里,形成一张表
      

  2.   

    用js可以吗?function TableToExcel(tableid) {//整个表格拷贝到EXCEL中   
        //检索浏览器  
        if (navigator.userAgent.indexOf("MSIE") < 0) {
            alert('请用ie浏览器进行表格导出');
            return;
        }    var curTbl = document.getElementById(tableid);
        var oXL = null;
        try {
            oXL = GetObject("", "Excel.Application");
        }
        catch (E) {
            try {
                oXL = new ActiveXObject("Excel.Application");
            }
            catch (E2) {
                alert("导出Excel失败!");
                return;
            }
        }    //创建AX对象excel   
        var oWB = oXL.Workbooks.Add();
        //获取workbook对象   
        var oSheet = oWB.ActiveSheet;
        //在此进行样式控制  
        oSheet.Rows(1 + ":" + 1).RowHeight = 20; //定义行高  
        oSheet.Rows(2 + ":" + 2).RowHeight = 20;
        //定义列宽  
        oSheet.Columns('A:A').ColumnWidth = 15;
        oSheet.Columns('B:B').ColumnWidth = 20;
        oSheet.Columns('C:C').ColumnWidth = 10;
        oSheet.Columns('D:D').ColumnWidth = 15;
        oSheet.Columns('E:E').ColumnWidth = 10;
        oSheet.Columns('F:F').ColumnWidth = 10;
        oSheet.Columns('G:G').ColumnWidth = 20;
        oSheet.Columns('H:H').ColumnWidth = 15;
        oSheet.Columns('I:I').ColumnWidth = 15;
        oSheet.Columns('J:J').ColumnWidth = 10;
        oSheet.Columns('K:K').ColumnWidth = 10;
        oSheet.Columns('L:L').ColumnWidth = 15;    //oSheet.Rows(1).HorizontalAlignment = 3;    var sel = document.body.createTextRange(); //激活当前sheet   
        sel.moveToElementText(curTbl); //把表格中的内容移到TextRange中  
        sel.select();  //全选TextRange中内容   
        sel.execCommand("Copy"); //复制TextRange中内容   
        oSheet.Paste(); //粘贴到活动的EXCEL中   
        oXL.Visible = true; //设置excel可见属性      //oSheet.Application.Quit();   //结束当前进程
    }   或者用RenderControl方法把生成的HTML输出为Excel格式:protected void ToExcel(DataTable dt)
            {
                try
                {
                    DataGrid dgExport = null;
                       HttpContext curContext = System.Web.HttpContext.Current;
                       StringWriter strWriter = null;
                    HtmlTextWriter htmlWriter = null;                if (dt!= null)
                    {
                        // 设置编码和附件格式 
                        curContext.Response.ContentType = "application/vnd.ms-excel";
                        curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
                        curContext.Response.Charset = "";                    // 导出excel文件 
                        strWriter = new System.IO.StringWriter();
                        htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);                    dgExport = new System.Web.UI.WebControls.DataGrid();
                        dgExport.DataSource = dt.DefaultView;
                        dgExport.DataBind();                    // 返回客户端 
                        dgExport.RenderControl(htmlWriter);
                        curContext.Response.Write(strWriter.ToString());
                        curContext.Response.End();
                    }
                }
                catch (Exception ex)
                {
                    ClientScript.RegisterStartupScript(typeof(Page), "Error", "<script>alert(\"导出Excel时遇到错误。错误信息:\\n\\n" + ex.Message.Replace("\r\n", "") + "\");</script>");
                }
            }
      

  3.   

    HTML导出EXCEL
      

  4.   

    把html当成xml来用,就可以导入dataset了
      

  5.   

    自己简单试了一下,注意确保td中没用控件。
    前台HTML:<body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true" />
        </div>
        <div>
            <table id="table1" runat="server">
                <tr>
                    <td>id</td>
                    <td>name</td>
                </tr>
                <tr>
                    <td>1</td>
                    <td>aaa</td>
                </tr>
                <tr>
                    <td>2</td>
                    <td>bbb</td>
                </tr>
            </table>
        </div>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="转换成DataTable并绑定到GridView" />
        </form>
    </body>后台cs:protected void Button1_Click(object sender, EventArgs e)
            {
                //把第一行作为标题列
                if (table1.Rows.Count == 0) return;
                DataTable dt = new DataTable();
                foreach (HtmlTableCell cell in table1.Rows[0].Cells)
                {
                    dt.Columns.Add(new DataColumn(cell.InnerText));
                }
                //把第二行以后的作为数据行            
                for (int i=1; i < table1.Rows.Count; i++)
                {
                    DataRow newRow=dt.NewRow();
                    for (int j=0; j < table1.Rows[i].Cells.Count; j++)
                    {
                        newRow[j] = table1.Rows[i].Cells[j].InnerText;
                    }
                    dt.Rows.Add(newRow);
                }            //绑定GridView
                this.GridView1.DataSource = dt.DefaultView;
                this.GridView1.DataBind();
            }