修改文件
我用的jszip版本3.2.1
JSZip.generate这个方法会报错,改源码吧,兄弟
参考jszip官网的从2.xx版本向3.xx版本过渡的方法变更
// 2.x
zip.generate();
// 3.x
zip.generateAsync({
type:"uint8array"})
.then(function (content) {
// use content
});
// node_modules里找到xlsx-style文件夹最外层的xlsx.js中的第11766行开始
// 原版的代码---修改前
function write_zip_type(wb, opts) {
var o = opts||{
};
style_builder = new StyleBuilder(opts);
var z = write_zip(wb, o);
switch(o.type) {
case "base64": return z.generate({
type:"base64"});
case "binary": return z.generate({
type:"string"});
case "buffer": return z.generate({
type:"nodebuffer"});
case "file": return _fs.writeFileSync(o.file, z.generate({
type:"nodebuffer"}));
default: throw new Error("Unrecognized type " + o.type);
}
}
//修改后的代码
function write_zip_type(wb, opts) {
var o = opts||{
};
style_builder = new StyleBuilder(opts);
console.log(o,o.type)
var z = write_zip(wb, o);
switch(o.type) {
case "base64": return z.generateAsync({
type:"base64"}).then(res => {
// console.log(res)
return res
});
case "binary": return z.generateAsync({
type:"string"}).then( res => {
// console.log(res)
return res
});
case "buffer": return z.generateAsync({
type:"nodebuffer"}).then( res => {
// console.log(res)
return res
});
case "file": return z.generateAsync({
type:"nodebuffer"}).then( res => {
// console.log(res)
return _fs.writeFileSync(o.file,res)
// return res
});
default: throw new Error("Unrecognized type " + o.type);
}
}
// 搞个文件名字叫excelOut.js,在src的vendor文件下
/* eslint-disable */
require('script-loader!file-saver');
import XLSX from 'xlsx-style'
function generateArray(table) {
var out = [];
var rows = table.querySelectorAll('tr');
var ranges = [];
for (var R = 0; R < rows.length; ++R) {
var outRow = [];
var row = rows[R];
var columns = row.querySelectorAll('td');
for (var C = 0; C < columns.length; ++C) {
var cell = columns[C];
var colspan = cell.getAttribute('colspan');
var rowspan = cell.getAttribute('rowspan');
var cellValue = cell.innerText;
if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
//Skip ranges
ranges.forEach(function (range) {
if (R >= range