日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue3.0导出excel带格式

發布時間:2024/3/13 vue 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue3.0导出excel带格式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個真的困擾了我整整一天,我嘗試了xlxs file-saver兩個組件的版本,怎么搞都不行

先不說vue3.0 不能import進來,只能require(‘xlxs’),require(‘file-saver’)
把這兩個插件引入是能導出excel的,但是不支持更改樣式;
寫法如下:

function exportFun() {const time = new Date().getTime();var XLSX = require("xlsx");let namestring = "";var wb;wb =XLSX &&XLSX.utils.table_to_book(document.querySelector("#exporttable"),{raw:true}); exportfile(wb, namestring); } function exportfile(wb: any, namestring: any) {var XLSX = require("xlsx");var wbout =XLSX &&XLSX.write(wb, {bookType: "xlsx",bookSST: true,type: "array",});let FileSaver = require("file-saver");try {// let buf = s2ab(wbout)FileSaver.saveAs(new Blob([wbout], { type: "application/octet-stream" }),// 設置導出文件名稱 xxx.xlsxnamestring);close();} catch (e) {if (typeof console !== "undefined") console.log(e, wbout);} }

查了另一種方式,通過Blob.js,Export2Excel的寫法 ,參考: https://www.cnblogs.com/-wenli/p/14843432.html,但是我代碼寫法是ts,調了半天總算不報錯了,結果還是跑不起來,放棄

或者引入xlxs-style插件修改,但是這個需要修改源代碼,我想著到時候打包到生產得手動打包,項目不允許就放棄這個方法了,到底能不能跑起來暫時未知

終于找到了一個方法:參考https://www.jb51.net/article/186856.htm,解決了,困擾了我一天的問題解決了,就這么幾行代碼,啥都不用安裝,原理暫時不懂,但是解決了問題。等有時間研究研究

template里面的東西<el-button @click="exportFun">導出</el-button><adownload="table導出Excel"id="excelOut"href="#"rel="external nofollow">table導出Excel</a><table border="1" style="height: 200px; width: 1200px" id="exporttable"><tr><td colspan="9" style="color: red; font-size: 22px">標題111111111</td><!--注意此處的td標簽由原來的三個變為一個--></tr><tr><td>報送機關名稱</td><td>123123</td><td colspan="7">111</td></tr><tr><td><span style="color: red">必填</span>報告期限</td><td>8</td><td colspan="7">6</td></tr><tr><td>填報日期</td><td>8</td><td colspan="7">6</td></tr><tr><td colspan="9">填表說明:;<br />這是數據 <br />換行了 </td></tr><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td></tr></table>js里面的代碼:function exportFun() {tableToExcel("exporttable", "下載模板");}//base64轉碼function base64(s: any) {return window.btoa(unescape(encodeURIComponent(s)));}//替換table數據和worksheet名字function format(s: any, c: any) {return s.replace(/{(\w+)}/g, function (m: any, p: any) {return c[p];});}function tableToExcel(tableid: any, sheetName: any) {var uri = "data:application/vnd.ms-excel;base64,";var 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]-->" +' <style type="text/css">' +"table td {" +"border: 1px solid #000000;" +"width: 200px;" +"height: 30px;" +" text-align: center;" +"background-color: #4f891e;" +"color: #ffffff;" +" }" +"</style>" +'</head><body ><table class="excelTable">{table}</table></body></html>';if (!tableid.nodeType) tableid = document.getElementById(tableid);var ctx = {worksheet: sheetName || "Worksheet",table: tableid.innerHTML,};const a: any = document.getElementById("excelOut");a.href = uri + base64(format(template, ctx));a.click();}

總結

以上是生活随笔為你收集整理的vue3.0导出excel带格式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。