1. 程式人生 > >利用JavaScript所見即所得的生成Excel表格

利用JavaScript所見即所得的生成Excel表格

姓名 數據量 nts object -type 很多 href 當前 doc

筆者認為,解決問題的途徑n種,也有很多組合的使用。我們用Excel導出大量數據的時候,可能會從服務器端,但如果數據量較小,是不是也可以考慮使用JavaScript就可以輕量級的導出呢。另外實際工作中,用戶也會考慮,所見即所得的導出當前見到的內容到Excel表格中。
這裏,筆者有那麽一丟丟感想,像文檔數據、文件數據、圖片數據歸根結底都是一些數據碼,而數據碼的解析方式也是分多鐘的,像.html的文件可以用記事本、瀏覽器、編輯工具等打開。這裏筆者就利用Excel能夠打開html文檔,投機取巧了一把後綴名是.xls哦。
JavaScript導出表格三個弊端:1、只能導出當前頁面;2、若存在大量數據,則JavaScript超時崩潰;3、導出數據的同時,不可以做其他事情。因此,一些正式的、大量的數據就不要通過JavaScript生成了,小打小鬧可以哦。
上代碼嘍,筆者親測哦:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <meta charset="utf-8" />
</head>
<body>
    <table border="1">
        <caption>遊戲級別統計表</caption>
        <tr>
            <th rowspan="2">序號</th>
            <th rowspan="2">遊戲號</th>
            <th rowspan="2">姓名</th>
            <th rowspan="2">性別</th>
            <th rowspan="2">年齡</th>
            <th colspan="3">等級</th>
        </tr>
        <tr>
            <th>lol</th>
            <th>cf</th>
            <th>dnf</th>
            <th>lsd</th>
        </tr>
        <tr>
            <td>1</td>
            <td>20180811</td>
            <td>RedAnt</td>
            <td>男</td>
            <td>不詳</td>
            <td>80</td>
            <td>雙杠一星</td>
            <td>80</td>
            <td>213</td>
        </tr>
        <tr>
            <td>2</td>
            <td>20180812</td>
            <td>HoYL</td>
            <td>男</td>
            <td>不詳</td>
            <td>81</td>
            <td>雙杠一星</td>
            <td>80</td>
            <td>999</td>
        </tr>
        <tr>
            <td>2</td>
            <td>20180813</td>
            <td>Thinking</td>
            <td>男</td>
            <td>不詳</td>
            <td>81</td>
            <td>雙杠一星</td>
            <td>80</td>
            <td>999</td>
        </tr>
    </table>
    <a download="遊戲級別統計表.xls">導出表格</a>
    <script type="text/javascript" src="js/jquery.min.js" ></script>
    <script>
        $(document).ready(function(){
            var now_html = "<html><head><meta charset=‘utf-8‘ /></head><body>" + document.getElementsByTagName("table")[0].outerHTML + "</body></html>";
            /*outerHTML:獲取整個table元素的HTML代碼(包括<table>標簽),包裝成一個完整的HTML文檔
             charset為urf-8以防止中文亂碼*/
            var blob = new Blob([now_html], { type: "application/vnd.ms-excel" });
            /*實例化一個Blob對象
             * Blob構造函數:[now_html]包含文件的數組
             * { type: "application/vnd.ms-excel" }:是包含文件類型屬性的對象*/
            var a = document.getElementsByTagName("a")[0];
            //利用URL.createObjectURL()方法為a元素生成blob URL
            a.href = URL.createObjectURL(blob);
        })
    </script>
</body>
</html>

演示效果:
技術分享圖片
技術分享圖片
沒有在所有瀏覽器上都調試哦,筆者認為前端的東西至少適配三種內核瀏覽器的。

利用JavaScript所見即所得的生成Excel表格