优化导出逻辑

This commit is contained in:
xuliangzhan
2019-11-05 14:30:43 +08:00
parent 349eb9d9e5
commit 3c682400ea
6 changed files with 72 additions and 16 deletions

View File

@@ -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

File diff suppressed because one or more lines are too long

32
dist/index.js vendored
View File

@@ -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
View File

@@ -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});

View File

@@ -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) {

View File

@@ -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",