HTML中Table导出为Excel---转载

近期需要把代码自动画出的Table转至EXCEL,于是在网上找到这篇文章,目前还未测试使用,先保存了,在此谢谢作者。

转载地址:http://blog.sina.com.cn/s/blog_62cd5a980100vcxh.html



博主前面介绍了GridView导出为Excel的实例,也给出了代码,网上有很多询问Html中的Table导出为Excel的问题,其实博主前面的文章中导出GridView的方法也完全适用于Table,只是有一点,由于Table不是服务器控件,所以不能直接使用This."控件ID",需要使用控件的遍历,加入以下代码就可以了

foreach (Control tb in this.Page.Controls)
       {
           if (tb.GetType().Name == "Table")
           {
               Table table = new Table();
               //Response.Write(table.GetType().Name);
               table = (Table)tb.FindControl(tb.ID);
               table.RenderControl(htmlWrite);
           }
       }

原来的方法修改为:

public void exportToExcel(object sender, EventArgs e)
    {
       Response.Clear();
       Response.AddHeader("content-disposition","attachment;filename=ExportResult.xls");
       Response.Charset = "gb2312";
       Response.ContentType = "application/vnd.xls";
       System.IO.StringWriter stringWrite = newSystem.IO.StringWriter();
       System.Web.UI.HtmlTextWriter htmlWrite = newHtmlTextWriter(stringWrite);
       //GridView1.AllowPaging = false;
       //BindData();
       foreach (Control tb in this.Page.Controls)
       {
           if (tb.GetType().Name == "Table")
           {
               Table table = new Table();
               //Response.Write(table.GetType().Name);
               table = (Table)tb.FindControl(tb.ID);
               table.RenderControl(htmlWrite);
           }
       }
      
       Response.Write(stringWrite.ToString());
       Response.End();

    }

还有一种方法就是使用JS。可以很方便的将页面上的Table转换为Excel;

   <script type="text/javascript">
       function gethtml()
       {
           var fTableElement,strcell,rows,cols,style,excelstr;
           fTableElement = document.getElementByIdx_x("table1");
           excelstr ="<html><head><!--<xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>工作表标题</x:Name><x:WorksheetOptions><x:print><x:ValidPrinterInfo/></x:print></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head>";
           excelstr += "<tableborder='1'>";
           //excelstr = "<tableborder='1'>";
           for (i = 0; i < fTableElement.rows.length;i++)
           {
               excelstr += "<tr>";
               for (j = 0; j < fTableElement.rows[i].cells.length;j++)
               {
                   rows = fTableElement.rows[i].cells[j].rowSpan;
                   cols = fTableElement.rows[i].cells[j].colSpan;
                   style = fTableElement.rows[i].cells[j].align;
                   excelstr += "<td colspan=" + cols + " rowspan=" +rows + " align=" + style + ">";
                   for(k = 0; k <fTableElement.rows(i).cells(j).children.length;k++){
                   

猜你喜欢

转载自blog.csdn.net/uiwgi/article/details/38083375