{"id":726,"date":"2023-06-06T20:27:43","date_gmt":"2023-06-06T12:27:43","guid":{"rendered":"http:\/\/gjweb.top\/?p=726"},"modified":"2023-06-06T20:28:15","modified_gmt":"2023-06-06T12:28:15","slug":"22-vue%e6%a0%b9%e6%8d%ae%e8%a1%a8%e6%a0%bc%e5%af%bc%e5%87%baexecl%e6%96%87%e4%bb%b6","status":"publish","type":"post","link":"https:\/\/gjweb.top\/?p=726","title":{"rendered":"22. vue\u6839\u636e\u8868\u683c\u5bfc\u51faexecl\u6587\u4ef6"},"content":{"rendered":"\n<p>\u9700\u8981\u7684\u5f15\u5165\u7684 SDN \u8d44\u6e90<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/xlsx-style@0.8.13\/dist\/jszip.js\"&gt;&lt;\/script&gt;<br>&lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/xlsx-style@0.8.13\/dist\/cpexcel.js\"&gt;&lt;\/script&gt;<br>&lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/xlsx-style@0.8.13\/dist\/ods.js\"&gt;&lt;\/script&gt;<br>&lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/file-saver@2.0.2\/dist\/FileSaver.js\"&gt;&lt;\/script&gt;<br>&lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/xlsx@0.16.6\/dist\/xlsx.js\"&gt;&lt;\/script&gt;<br>&lt;!--\u5f15\u5165\u7684\u672c\u5730\u8d44\u6e90--&gt;<br>&lt;script src=\".\/xlsx.js\"&gt;&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<p>xlsx.js \u4ee3\u7801  <strong>[ \u5c06\u4e0b\u8f7d\u7684 txt \u6539\u6210 js \u6269\u5c55\u540d ]<\/strong><\/p>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-ca3061bf-8721-4e13-a740-b4f7dabd79ef\" href=\"http:\/\/gjweb.top\/wp-content\/uploads\/2023\/06\/xlsx.txt\">xlsx<\/a><a href=\"http:\/\/gjweb.top\/wp-content\/uploads\/2023\/06\/xlsx.txt\" class=\"wp-block-file__button\" download aria-describedby=\"wp-block-file--media-ca3061bf-8721-4e13-a740-b4f7dabd79ef\">\u4e0b\u8f7d<\/a><\/div>\n\n\n\n<p>vue\u4e2d\u4f7f\u7528<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;<br> &nbsp;&lt;div class=\"home\"&gt;<br> &nbsp; &nbsp;&lt;button @click=\"exportExcel\"&gt;\u5bfc\u51faexecl&lt;\/button&gt;<br> &nbsp; &nbsp;&lt;div class=\"tableContainer\"&gt;<br> &nbsp; &nbsp; &nbsp;&lt;table id=\"tableContainer\"&gt;<br> &nbsp; &nbsp; &nbsp; &nbsp;  ... \u8868\u683c\u7684\u5185\u5bb9<br> &nbsp; &nbsp; &nbsp;&lt;\/table&gt;<br> &nbsp; &nbsp;&lt;\/div&gt;<br> &nbsp;&lt;\/div&gt;<br>&lt;\/template&gt;<br>&lt;script&gt;<br>const XLSX = window.XLSX;<br>const XLSXX = window.XLSXX;<br>export default {<br> &nbsp;name: \"HomeView\",<br> &nbsp;data() {<br> &nbsp; &nbsp;return {};<br>  },<br> &nbsp;components: {},<br> &nbsp;methods: {<br> &nbsp; &nbsp;exportExcel() {<br> &nbsp; &nbsp; &nbsp;this.sheetJSExportTable(document.getElementById(\"tableContainer\"));<br> &nbsp;  },<br>\u200b<br> &nbsp; &nbsp;sheetJSExportTable(table) {<br> &nbsp; &nbsp; &nbsp;var elt = table;<br> &nbsp; &nbsp; &nbsp;var wb = XLSX.utils.table_to_book(elt, { sheet: \"Sheet JS\", raw: true });<br> &nbsp; &nbsp; &nbsp;let range = XLSX.utils.decode_range(wb.Sheets&#91;\"Sheet JS\"]&#91;\"!ref\"]);<br> &nbsp; &nbsp; &nbsp;console.log(wb);<br> &nbsp; &nbsp; &nbsp;console.log(range);<br> &nbsp; &nbsp; &nbsp;let borderStyle = {<br> &nbsp; &nbsp; &nbsp; &nbsp;top: {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;style: \"thin\",<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;color: { rgb: \"000000\" },<br> &nbsp; &nbsp; &nbsp;  },<br> &nbsp; &nbsp; &nbsp; &nbsp;bottom: {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;style: \"thin\",<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;color: { rgb: \"000000\" },<br> &nbsp; &nbsp; &nbsp;  },<br> &nbsp; &nbsp; &nbsp; &nbsp;left: {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;style: \"thin\",<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;color: { rgb: \"000000\" },<br> &nbsp; &nbsp; &nbsp;  },<br> &nbsp; &nbsp; &nbsp; &nbsp;right: {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;style: \"thin\",<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;color: { rgb: \"000000\" },<br> &nbsp; &nbsp; &nbsp;  },<br> &nbsp; &nbsp;  };<br> &nbsp; &nbsp; &nbsp;wb.Sheets&#91;\"Sheet JS\"]&#91;\"!merges\"].forEach((item) =&gt; {<br> &nbsp; &nbsp; &nbsp; &nbsp;if (item.e.r == item.s.r &amp;&amp; item.e.c != item.s.c) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ \u5217\u5408\u5e76<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let R = item.s.r;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ let countLength = item.e.c - item.s.c;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (let i = item.s.c; i &lt;= item.e.c; i++) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let cell = { c: i, r: R };<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let cell_ref = XLSX.utils.encode_cell(cell);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!wb.Sheets&#91;\"Sheet JS\"]&#91;cell_ref]) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wb.Sheets&#91;\"Sheet JS\"]&#91;cell_ref] = { t: \"s\", v: \"\" };<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }<br> &nbsp; &nbsp; &nbsp; &nbsp;  }<br> &nbsp; &nbsp; &nbsp;  } else if (item.e.c == item.s.c &amp;&amp; item.e.r != item.s.r) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ \u884c\u5408\u5e76<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let C = item.s.c;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ let countLength = item.e.r - item.s.r;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (let i = item.s.r; i &lt;= item.e.r; i++) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let cell = { c: C, r: i };<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let cell_ref = XLSX.utils.encode_cell(cell);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!wb.Sheets&#91;\"Sheet JS\"]&#91;cell_ref]) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wb.Sheets&#91;\"Sheet JS\"]&#91;cell_ref] = { t: \"s\", v: \"\" };<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }<br> &nbsp; &nbsp; &nbsp; &nbsp;  }<br> &nbsp; &nbsp; &nbsp;  }<br> &nbsp; &nbsp;  });<br> &nbsp; &nbsp; &nbsp;console.log(wb);<br> &nbsp; &nbsp; &nbsp;console.log(range);<br> &nbsp; &nbsp; &nbsp;for (let C = range.s.c; C &lt;= range.e.c; ++C) {<br> &nbsp; &nbsp; &nbsp; &nbsp;for (let R = range.s.r; R &lt;= range.e.r; ++R) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let cell = { c: C, r: R };<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let cell_ref = XLSX.utils.encode_cell(cell);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (R == 1) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wb.Sheets&#91;\"Sheet JS\"]&#91;cell_ref].s = {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;alignment: {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;horizontal: \"center\",<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vertical: \"center\",<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  },<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;font: {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;name: \"\u9ed1\u4f53\",<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ sz: \"15\",<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bold: true,<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  },<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;border: borderStyle,<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  };<br> &nbsp; &nbsp; &nbsp; &nbsp;  } else {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (wb.Sheets&#91;\"Sheet JS\"]&#91;cell_ref]) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wb.Sheets&#91;\"Sheet JS\"]&#91;cell_ref].s = {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;font: {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;name: \"\u9ed1\u4f53\",<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/ sz: \"12\",<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  },<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;border: borderStyle,<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  };<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }<br> &nbsp; &nbsp; &nbsp; &nbsp;  }<br> &nbsp; &nbsp; &nbsp;  }<br> &nbsp; &nbsp;  }<br> &nbsp; &nbsp; &nbsp;var wopts = { bookType: \"xlsx\", bookSST: false, type: \"binary\" };<br> &nbsp; &nbsp; &nbsp;var wbout = XLSXX.write(wb, wopts); \/\/ \u4f7f\u7528xlsx-style \u5199\u5165<br> &nbsp; &nbsp; &nbsp;\/\/ eslint-disable-next-line<br> &nbsp; &nbsp; &nbsp;saveAs(new Blob(&#91;this.s2ab(wbout)], { type: \"\" }), \"aa.xlsx\");<br> &nbsp;  },<br>\u200b<br> &nbsp; &nbsp;s2ab(s) {<br> &nbsp; &nbsp; &nbsp;var buf = new ArrayBuffer(s.length);<br> &nbsp; &nbsp; &nbsp;var view = new Uint8Array(buf);<br> &nbsp; &nbsp; &nbsp;for (var i = 0; i != s.length; ++i) view&#91;i] = s.charCodeAt(i) &amp; 0xff;<br> &nbsp; &nbsp; &nbsp;return buf;<br> &nbsp;  },<br>  },<br>};<br>&lt;\/script&gt;<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u9700\u8981\u7684\u5f15\u5165\u7684 SDN \u8d44\u6e90 xlsx.js \u4ee3\u7801 [ \u5c06\u4e0b\u8f7d\u7684 txt \u6539\u6210 js \u6269\u5c55\u540d ] vue\u4e2d\u4f7f\u7528<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-726","post","type-post","status-publish","format-standard","hentry","category-vue"],"_links":{"self":[{"href":"https:\/\/gjweb.top\/index.php?rest_route=\/wp\/v2\/posts\/726","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gjweb.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gjweb.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gjweb.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gjweb.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=726"}],"version-history":[{"count":2,"href":"https:\/\/gjweb.top\/index.php?rest_route=\/wp\/v2\/posts\/726\/revisions"}],"predecessor-version":[{"id":729,"href":"https:\/\/gjweb.top\/index.php?rest_route=\/wp\/v2\/posts\/726\/revisions\/729"}],"wp:attachment":[{"href":"https:\/\/gjweb.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=726"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gjweb.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=726"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gjweb.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}