vue頁面原樣導出excel表格


github地址:https://github.com/wuzhiaite/vue-samples

1.excel導出

  做過業務系統的知道,進行涉及到excel的導出,列表數據動則幾十萬,但是也有一部分分組數據,數據量不是很多,但是數據結構比較復雜。所以后台導出的方式就不是很好。
  因此有的時候,當 ==**表格結構比較復雜**== 的時候,我們需要前台頁面導出。

下面我們分析一下怎么做:

	// 使用outerHTML屬性獲取整個table元素的HTML代碼(包括<table>標簽),然后包裝成一個完整的HTML文檔,設置charset為urf-8以防止中文亂碼
        var html = "<html><head><meta charset='utf-8' /></head><body>" + document.getElementsByTagName("table")[0].outerHTML + "</body></html>";
        // 實例化一個Blob對象,其構造函數的第一個參數是包含文件內容的數組,第二個參數是包含文件類型屬性的對象
        var blob = new Blob([html], { type: "application/vnd.ms-excel" });
        var a = document.getElementsByTagName("a")[0];//這里也可以通過指定id進行獲取
        // 利用URL.createObjectURL()方法為a元素生成blob URL
        a.href = URL.createObjectURL(blob);
        // 設置文件名
        a.download = "商品清單.xls";

2.結合上面的代碼,給出一個完整的實例

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <meta charset="utf-8" />
    <style>
        table {
            border-collapse: collapse;
        }
    </style>
</head>
<body >
<div id="app">
    <!-- 設置border="1"以顯示表格框線 -->
    <table border="1">
        <!-- caption元素可以生成表標題,其單元格列跨度為表格的列數 -->
        <caption>商品清單</caption>
        <tr style="height:100px;" >
            <th rowspan="2" style="width:100px;">序號</th>
            <th rowspan="2">商品編號</th>
            <th rowspan="2">分類</th>
            <th colspan="3">價格</th>
        </tr>
        <tr>
            <th>國產</th>
            <th>進口</th>
        </tr>
        <tr>
            <td>1</td>
            <td>201111</td>
            <td>手機</td>
            <td>2000</td>
            <td>5000</td>
        </tr>
        <tr>
            <td>2</td>
            <td>2021243</td>
            <td>電腦</td>
            <td>96000</td>
            <td>5000</td>
        </tr>
    </table>
    <a>導出excel</a>
</div>	
	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
		var app = new Vue({
	el:"#app",
	data:function(){
		return {}
	},
	created(){
		// 使用outerHTML屬性獲取整個table元素的HTML代碼(包括<table>標簽),然后包裝成一個完整的HTML文檔,設置charset為urf-8以防止中文亂碼
        var html = "<html><head><meta charset='utf-8' /></head><body>" + document.getElementsByTagName("table")[0].outerHTML + "</body></html>";
        // 實例化一個Blob對象,其構造函數的第一個參數是包含文件內容的數組,第二個參數是包含文件類型屬性的對象
        var blob = new Blob([html], { type: "application/vnd.ms-excel" });
        var a = document.getElementsByTagName("a")[0];
        // 利用URL.createObjectURL()方法為a元素生成blob URL
        a.href = URL.createObjectURL(blob);
        // 設置文件名
        a.download = "商品清單.xls";
	},
	methods:{
	}
	
})      
    </script>
</body>
</html>

3.導出的表格樣式

以上,就是一個簡單的頁面導出excel過程;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM