mirror of
https://gitee.com/x-extends/vxe-table-plugin-export-xlsx.git
synced 2026-01-21 05:21:33 +08:00
优化导出逻辑
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
## Installing
|
||||
|
||||
```shell
|
||||
npm install xe-utils vxe-table vxe-table-plugin-export xlsx file-saver
|
||||
npm install xe-utils vxe-table vxe-table-plugin-export xlsx
|
||||
```
|
||||
|
||||
```javascript
|
||||
|
||||
27
dist/index.common.js
vendored
27
dist/index.common.js
vendored
File diff suppressed because one or more lines are too long
32
dist/index.js
vendored
32
dist/index.js
vendored
@@ -1,16 +1,16 @@
|
||||
(function (global, factory) {
|
||||
if (typeof define === "function" && define.amd) {
|
||||
define("vxe-table-plugin-export", ["exports", "xe-utils", "xlsx", "file-saver"], factory);
|
||||
define("vxe-table-plugin-export", ["exports", "xe-utils", "xlsx"], factory);
|
||||
} else if (typeof exports !== "undefined") {
|
||||
factory(exports, require("xe-utils"), require("xlsx"), require("file-saver"));
|
||||
factory(exports, require("xe-utils"), require("xlsx"));
|
||||
} else {
|
||||
var mod = {
|
||||
exports: {}
|
||||
};
|
||||
factory(mod.exports, global.XEUtils, global.XLSX, global.FileSaver);
|
||||
factory(mod.exports, global.XEUtils, global.XLSX);
|
||||
global.VXETablePluginExport = mod.exports.default;
|
||||
}
|
||||
})(this, function (_exports, _xeUtils, XLSX, FileSaver) {
|
||||
})(this, function (_exports, _xeUtils, XLSX) {
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(_exports, "__esModule", {
|
||||
@@ -19,7 +19,6 @@
|
||||
_exports["default"] = _exports.VXETablePluginExport = void 0;
|
||||
_xeUtils = _interopRequireDefault(_xeUtils);
|
||||
XLSX = _interopRequireWildcard(XLSX);
|
||||
FileSaver = _interopRequireWildcard(FileSaver);
|
||||
|
||||
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
|
||||
|
||||
@@ -77,7 +76,28 @@
|
||||
type: 'application/octet-stream'
|
||||
}); // 保存导出
|
||||
|
||||
FileSaver.saveAs(blob, "".concat(filename, ".").concat(type));
|
||||
download(blob, options);
|
||||
}
|
||||
|
||||
function download(blob, options) {
|
||||
if (window.Blob) {
|
||||
var filename = options.filename,
|
||||
type = options.type;
|
||||
|
||||
if (navigator.msSaveBlob) {
|
||||
navigator.msSaveBlob(blob, filename);
|
||||
} else {
|
||||
var linkElem = document.createElement('a');
|
||||
linkElem.target = '_blank';
|
||||
linkElem.download = "".concat(filename, ".").concat(type);
|
||||
linkElem.href = URL.createObjectURL(blob);
|
||||
document.body.appendChild(linkElem);
|
||||
linkElem.click();
|
||||
document.body.removeChild(linkElem);
|
||||
}
|
||||
} else {
|
||||
console.error('[vxe-table-plugin-export] The current environment does not support exports.');
|
||||
}
|
||||
}
|
||||
|
||||
function handleExportEvent(params) {
|
||||
|
||||
2
dist/index.min.js
vendored
2
dist/index.min.js
vendored
@@ -1 +1 @@
|
||||
!function(e,t){if("function"==typeof define&&define.amd)define("vxe-table-plugin-export",["exports","xe-utils","xlsx","file-saver"],t);else if("undefined"!=typeof exports)t(exports,require("xe-utils"),require("xlsx"),require("file-saver"));else{var r={exports:{}};t(r.exports,e.XEUtils,e.XLSX,e.FileSaver),e.VXETablePluginExport=r.exports.default}}(this,function(e,x,y,b){"use strict";var t;function a(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return a=function(){return e},e}function r(e){if(e&&e.__esModule)return e;var t=a();if(t&&t.has(e))return t.get(e);var r={};if(null!=e){var n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var i=n?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(r,o,i):r[o]=e[o]}}return r.default=e,t&&t.set(e,r),r}function n(e){var t=e.options,n=e.columns,r=e.datas,o=t.filename,i=t.sheetName,a=t.type,u=t.isHeader,l=t.original,s={};u&&n.forEach(function(e){s[e.id]=e.getTitle()});var f=r.map(function(t){var r={};return n.forEach(function(e){r[e.id]=l?x.default.get(t,e.property):t[e.id]}),r}),p=y.utils.book_new(),c=y.utils.json_to_sheet((u?[s]:[]).concat(f),{skipHeader:!0});y.utils.book_append_sheet(p,c,i);var d=y.write(p,{bookType:a,bookSST:!1,type:"binary"}),v=new Blob([function(e){for(var t=new ArrayBuffer(e.length),r=new Uint8Array(t),n=0;n!==e.length;++n)r[n]=255&e.charCodeAt(n);return t}(d)],{type:"application/octet-stream"});b.saveAs(v,"".concat(o,".").concat(a))}function o(e){switch(e.options.type){case"xlsx":return n(e),!1}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.VXETablePluginExport=void 0,x=(t=x)&&t.__esModule?t:{default:t},y=r(y),b=r(b);var i={install:function(e){Object.assign(e.types,{xlsx:1}),e.interceptor.add("event.export",o)}};e.VXETablePluginExport=i,"undefined"!=typeof window&&window.VXETable&&window.VXETable.use(i);var u=i;e.default=u});
|
||||
!function(e,t){if("function"==typeof define&&define.amd)define("vxe-table-plugin-export",["exports","xe-utils","xlsx"],t);else if("undefined"!=typeof exports)t(exports,require("xe-utils"),require("xlsx"));else{var n={exports:{}};t(n.exports,e.XEUtils,e.XLSX),e.VXETablePluginExport=n.exports.default}}(this,function(e,d,v){"use strict";var t;function a(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return a=function(){return e},e}function n(e){var t=e.options,r=e.columns,n=e.datas,o=(t.filename,t.sheetName),i=t.type,a=t.isHeader,l=t.original,u={};a&&r.forEach(function(e){u[e.id]=e.getTitle()});var s=n.map(function(t){var n={};return r.forEach(function(e){n[e.id]=l?d.default.get(t,e.property):t[e.id]}),n}),p=v.utils.book_new(),c=v.utils.json_to_sheet((a?[u]:[]).concat(s),{skipHeader:!0});v.utils.book_append_sheet(p,c,o);var f=v.write(p,{bookType:i,bookSST:!1,type:"binary"});!function(e,t){if(window.Blob){var n=t.filename,r=t.type;if(navigator.msSaveBlob)navigator.msSaveBlob(e,n);else{var o=document.createElement("a");o.target="_blank",o.download="".concat(n,".").concat(r),o.href=URL.createObjectURL(e),document.body.appendChild(o),o.click(),document.body.removeChild(o)}}else console.error("[vxe-table-plugin-export] The current environment does not support exports.")}(new Blob([function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),r=0;r!==e.length;++r)n[r]=255&e.charCodeAt(r);return t}(f)],{type:"application/octet-stream"}),t)}function r(e){switch(e.options.type){case"xlsx":return n(e),!1}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.VXETablePluginExport=void 0,d=(t=d)&&t.__esModule?t:{default:t},v=function(e){if(e&&e.__esModule)return e;var t=a();if(t&&t.has(e))return t.get(e);var n={};if(null!=e){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var i=r?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}}n.default=e,t&&t.set(e,n);return n}(v);var o={install:function(e){Object.assign(e.types,{xlsx:1}),e.interceptor.add("event.export",r)}};e.VXETablePluginExport=o,"undefined"!=typeof window&&window.VXETable&&window.VXETable.use(o);var i=o;e.default=i});
|
||||
22
index.ts
22
index.ts
@@ -1,7 +1,6 @@
|
||||
import XEUtils from 'xe-utils/methods/xe-utils'
|
||||
import VXETable from 'vxe-table/lib/vxe-table'
|
||||
import * as XLSX from 'xlsx'
|
||||
import * as FileSaver from 'file-saver'
|
||||
|
||||
function toBuffer(wbout: any) {
|
||||
let buf = new ArrayBuffer(wbout.length)
|
||||
@@ -33,7 +32,26 @@ function toXLSX(params: any) {
|
||||
const wbout = XLSX.write(book, { bookType: type, bookSST: false, type: 'binary' })
|
||||
const blob = new Blob([toBuffer(wbout)], { type: 'application/octet-stream' })
|
||||
// 保存导出
|
||||
FileSaver.saveAs(blob, `${filename}.${type}`)
|
||||
download(blob, options)
|
||||
}
|
||||
|
||||
function download(blob: Blob, options: any) {
|
||||
if (window.Blob) {
|
||||
const { filename, type } = options
|
||||
if (navigator.msSaveBlob) {
|
||||
navigator.msSaveBlob(blob, filename)
|
||||
} else {
|
||||
var linkElem = document.createElement('a')
|
||||
linkElem.target = '_blank'
|
||||
linkElem.download = `${filename}.${type}`
|
||||
linkElem.href = URL.createObjectURL(blob)
|
||||
document.body.appendChild(linkElem)
|
||||
linkElem.click()
|
||||
document.body.removeChild(linkElem)
|
||||
}
|
||||
} else {
|
||||
console.error('[vxe-table-plugin-export] The current environment does not support exports.')
|
||||
}
|
||||
}
|
||||
|
||||
function handleExportEvent(params: any) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "vxe-table-plugin-export",
|
||||
"version": "1.0.2",
|
||||
"version": "1.0.3",
|
||||
"description": "基于 vxe-table 表格的增强插件,支持导出 xlsx 等格式",
|
||||
"scripts": {
|
||||
"lib": "gulp build"
|
||||
@@ -34,7 +34,6 @@
|
||||
"eslint-plugin-promise": "^4.0.1",
|
||||
"eslint-plugin-standard": "^4.0.0",
|
||||
"eslint-plugin-typescript": "^0.14.0",
|
||||
"file-saver": "^2.0.2",
|
||||
"gulp": "^4.0.2",
|
||||
"gulp-autoprefixer": "^6.1.0",
|
||||
"gulp-babel": "^8.0.0",
|
||||
|
||||
Reference in New Issue
Block a user