zoukankan      html  css  js  c++  java
  • 将HTML表格导出到EXCEL,兼容Firefox,支持中文

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>HTML表格导出到EXCEL</title>
    <script type="text/javascript" language="javascript">
    var idTmr;
    function getExplorer()
    {
        var explorer = window.navigator.userAgent;
        //ie
        if (explorer.indexOf("MSIE") >= 0)
        {
            return 'ie';
        }
        //firefox
        else if (explorer.indexOf("Firefox") >= 0)
        {
            return 'Firefox';
        }
        //Chrome
        else if (explorer.indexOf("Chrome") >= 0)
        {
            return 'Chrome';
        }
        //Opera
        else if (explorer.indexOf("Opera") >= 0)
        {
            return 'Opera';
        }
        //Safari
        else if (explorer.indexOf("Safari") >= 0)
        {
            return 'Safari';
        }
    }
    function table2excel(tableid)
    { //整个表格拷贝到EXCEL中
        if (getExplorer() == 'ie')
        {
            var curTbl = document.getElementById(tableid);
            var oXL = new ActiveXObject("Excel.Application");
            
            //创建AX对象excel
            var oWB = oXL.Workbooks.Add();
            //获取workbook对象
            var xlsheet = oWB.Worksheets(1);
            //激活当前sheet
            var sel = document.body.createTextRange();
            sel.moveToElementText(curTbl);
            //把表格中的内容移到TextRange中
            sel.select();
            //全选TextRange中内容
            sel.execCommand("Copy");
            //复制TextRange中内容
            xlsheet.Paste();
            //粘贴到活动的EXCEL中
            oXL.Visible = true;
            //设置excel可见属性
            
            try
            {
                var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
            }
            catch (e)
            {
                print("Nested catch caught " + e);
            }
            finally
            {
                oWB.SaveAs(fname);
                oWB.Close(savechanges = false);
                //xls.visible = false;
                oXL.Quit();
                oXL = null;
                //结束excel进程,退出完成
                //window.setInterval("Cleanup();",1);
                idTmr = window.setInterval("Cleanup();", 1);
                
            }
            
        }
        else
        {
            tableToExcel(tableid)
        }
    }
    function Cleanup()
    {
        window.clearInterval(idTmr);
        CollectGarbage();
    }
    var tableToExcel = (function ()
    {
        var uri = 'data:text/xls;charset=utf-8,ufeff,',
        template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
        base64 = function (s)
        {
            return window.btoa(encodeURIComponent(s))
        },
        format = function (s, c)
        {
            return s.replace(/{(w+)}/g,
                function (m, p)
            {
                return c[p];
            }
            )
        }
        return function (table, name)
        {
            if (!table.nodeType)
                table = document.getElementById(table)
                    var ctx =
                {
                    worksheet : name || 'Worksheet',
                    table : table.innerHTML
                }
            //window.location.href = uri + base64(format(template, ctx))
            
            var downloadLink = document.createElement("a");
            downloadLink.href = uri + format(template, ctx);
            downloadLink.download = '统计.xls';
            document.body.appendChild(downloadLink);
            downloadLink.click();
            document.body.removeChild(downloadLink);
        }
    }
    )()
    
    </script>
    
    </head>
    <body>
      <table id="targetTable" cellpadding="0" cellspacing="0" border="1">
        <tr align="center">
          <th>第一列</th>
          <th>第二列</th>
          <th>第三列</th>
        </tr>
        <tr align="center">
          <td>a</td>
          <td>b</td>
          <td rowspan="2" style="border:0">
            <table width="100%" cellpadding="0" cellspacing="0" border="1">
              <tr>
                <td>1</td>
                <td>2</td>
              </tr>
              <tr>
                <td rowspan="2">3</td>
                <td>4</td>
              </tr>
              <tr>
                <td>5</td>
              </tr>
            </table>
          </td>
        </tr>
        <tr align="center">
          <td>c</td>
          <td>d</td>
        </tr>
      </table>
    </br>
    <input id="Button1" type="button" value="导出EXCEL" onclick="javascript:table2excel('targetTable')" />
    </body>
    </html>

  • 相关阅读:
    prometheus — nginx-vts-exporter
    jenkins的sbt插件安装
    centos 踩坑集锦
    Prometheus — Process-exporter进程监控
    Prometheus 自定义exporter 监控key
    prometheus — 基于文件的服务发现
    Prometheus 企业微信报警/inhibit抑制 /静默(二)
    centos7-- sbt的安装使用
    prometheus + grafana + node_exporter + alertmanager 的安装部署与邮件报警 (一)
    nginx配置
  • 原文地址:https://www.cnblogs.com/liuswi/p/5792935.html
Copyright © 2011-2022 走看看