/* eslint-disable */ require('script-loader!file-saver'); require('script-loader!@/vendor/Blob'); 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.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) { for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null); } }); //Handle Row Span if (rowspan || colspan) { rowspan = rowspan || 1; colspan = colspan || 1; ranges.push({s: {r: R, c: outRow.length}, e: {r: R + rowspan - 1, c: outRow.length + colspan - 1}}); } ; //Handle Value outRow.push(cellValue !== "" ? cellValue : null); //Handle Colspan if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null); } out.push(outRow); } return [out, ranges]; }; function datenum(v, date1904) { if (date1904) v += 1462; var epoch = Date.parse(v); return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000); } function sheet_from_array_of_arrays(data, opts) { var ws = {}; var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}}; for (var R = 0; R != data.length; ++R) { for (var C = 0; C != data[R].length; ++C) { if (range.s.r > R) range.s.r = R; if (range.s.c > C) range.s.c = C; if (range.e.r < R) range.e.r = R; if (range.e.c < C) range.e.c = C; var cell = {v: data[R][C]}; if (cell.v == null) continue; var cell_ref = XLSX.utils.encode_cell({c: C, r: R}); if (typeof cell.v === 'number') cell.t = 'n'; else if (typeof cell.v === 'boolean') cell.t = 'b'; else if (cell.v instanceof Date) { cell.t = 'n'; cell.z = XLSX.SSF._table[14]; cell.v = datenum(cell.v); } else cell.t = 's'; ws[cell_ref] = cell; } } if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range); return ws; } function Workbook() { if (!(this instanceof Workbook)) return new Workbook(); this.SheetNames = []; this.Sheets = {}; } function s2ab(s) { if (typeof ArrayBuffer !== 'undefined') { var buf = new ArrayBuffer(s.length); var view = new Uint8Array(buf); for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; return buf; } else { var buf = new Array(s.length); for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF; return buf; } } function format2Sheet(e, r, n, o) { o = o || Object.keys(e[0]), r = r || 0, n = n || 0; var a = {}; return e.map(function(e, a) { return o.map(function(o, i) { return Object.assign({}, { v: e[o], position: (i + r > 25 ? t.getCharCol(i + r) : String.fromCharCode(65 + (i + r))) + (a + 1 + n) }) }) }).reduce(function(e, r) { return e.concat(r) }).forEach(function(e, r) { return a[e.position] = { v: e.v } }), a } function getCharCol(n) { let temCol = '', s = '', m = 0 while (n > 0) { m = n % 26 + 1 s = String.fromCharCode(m + 64) + s n = (n - m) / 26 } return s } export function export_table_to_excel(id) { var theTable = document.getElementById(id); var oo = generateArray(theTable); var ranges = oo[1]; /* original data */ var data = oo[0]; var ws_name = "SheetJS"; var wb = new Workbook(), ws = sheet_from_array_of_arrays(data); /* add ranges to worksheet */ // ws['!cols'] = ['apple', 'banan']; ws['!merges'] = ranges; /* add worksheet to workbook */ wb.SheetNames.push(ws_name); wb.Sheets[ws_name] = ws; var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'}); saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx") } export function export_json_to_excel(Data, Title, cell) { // 数据,标题,单元格坐标 const data = { "!ref": "A1:I28", // cellRangecjn "!merges": [ { "s": { "c": 3, "r": 23 }, "e": { "c": 6, "r": 23 } }, { "s": { "c": 3, "r": 24 }, "e": { "c": 6, "r": 24 } }, { "s": { "c": 3, "r": 25 }, "e": { "c": 6, "r": 25 } }, { "s": { "c": 6, "r": 26 }, "e": { "c": 8, "r": 26 } }, { "s": { "c": 3, "r": 18 }, "e": { "c": 6, "r": 18 } }, { "s": { "c": 3, "r": 19 }, "e": { "c": 6, "r": 19 } }, { "s": { "c": 3, "r": 20 }, "e": { "c": 6, "r": 20 } }, { "s": { "c": 3, "r": 21 }, "e": { "c": 6, "r": 21 } }, { "s": { "c": 3, "r": 22 }, "e": { "c": 6, "r": 22 } }, { "s": { "c": 1, "r": 22 }, "e": { "c": 2, "r": 22 } }, { "s": { "c": 1, "r": 23 }, "e": { "c": 2, "r": 23 } }, { "s": { "c": 1, "r": 24 }, "e": { "c": 2, "r": 24 } }, { "s": { "c": 1, "r": 25 }, "e": { "c": 2, "r": 25 } }, { "s": { "c": 1, "r": 26 }, "e": { "c": 2, "r": 26 } }, { "s": { "c": 3, "r": 6 }, "e": { "c": 6, "r": 6 } }, { "s": { "c": 3, "r": 7 }, "e": { "c": 6, "r": 7 } }, { "s": { "c": 3, "r": 8 }, "e": { "c": 6, "r": 8 } }, { "s": { "c": 3, "r": 9 }, "e": { "c": 6, "r": 9 } }, { "s": { "c": 3, "r": 10 }, "e": { "c": 6, "r": 10 } }, { "s": { "c": 3, "r": 11 }, "e": { "c": 6, "r": 11 } }, { "s": { "c": 3, "r": 12 }, "e": { "c": 6, "r": 12 } }, { "s": { "c": 3, "r": 13 }, "e": { "c": 6, "r": 13 } }, { "s": { "c": 3, "r": 14 }, "e": { "c": 6, "r": 14 } }, { "s": { "c": 3, "r": 15 }, "e": { "c": 6, "r": 15 } }, { "s": { "c": 3, "r": 16 }, "e": { "c": 6, "r": 16 } }, { "s": { "c": 3, "r": 17 }, "e": { "c": 6, "r": 17 } }, { "s": { "c": 1, "r": 17 }, "e": { "c": 2, "r": 17 } }, { "s": { "c": 1, "r": 18 }, "e": { "c": 2, "r": 18 } }, { "s": { "c": 1, "r": 19 }, "e": { "c": 2, "r": 19 } }, { "s": { "c": 1, "r": 20 }, "e": { "c": 2, "r": 20 } }, { "s": { "c": 1, "r": 21 }, "e": { "c": 2, "r": 21 } }, { "s": { "c": 1, "r": 12 }, "e": { "c": 2, "r": 12 } }, { "s": { "c": 1, "r": 13 }, "e": { "c": 2, "r": 13 } }, { "s": { "c": 1, "r": 14 }, "e": { "c": 2, "r": 14 } }, { "s": { "c": 1, "r": 15 }, "e": { "c": 2, "r": 15 } }, { "s": { "c": 1, "r": 16 }, "e": { "c": 2, "r": 16 } }, { "s": { "c": 1, "r": 7 }, "e": { "c": 2, "r": 7 } }, { "s": { "c": 1, "r": 8 }, "e": { "c": 2, "r": 8 } }, { "s": { "c": 1, "r": 9 }, "e": { "c": 2, "r": 9 } }, { "s": { "c": 1, "r": 10 }, "e": { "c": 2, "r": 10 } }, { "s": { "c": 1, "r": 11 }, "e": { "c": 2, "r": 11 } }, { "s": { "c": 0, "r": 4 }, "e": { "c": 0, "r": 5 } }, { "s": { "c": 3, "r": 4 }, "e": { "c": 6, "r": 5 } }, { "s": { "c": 1, "r": 4 }, "e": { "c": 2, "r": 5 } }, { "s": { "c": 1, "r": 6 }, "e": { "c": 2, "r": 6 } }, { "s": { "c": 0, "r": 2 }, "e": { "c": 3, "r": 2 } }, { "s": { "c": 4, "r": 0 }, "e": { "c": 4, "r": 3 } }, { "s": { "c": 6, "r": 0 }, "e": { "c": 8, "r": 0 } }, { "s": { "c": 5, "r": 2 }, "e": { "c": 6, "r": 2 } }, { "s": { "c": 7, "r": 2 }, "e": { "c": 8, "r": 2 } }, { "s": { "c": 5, "r": 3 }, "e": { "c": 6, "r": 3 } }, { "s": { "c": 7, "r": 3 }, "e": { "c": 8, "r": 3 } }, { "s": { "c": 7, "r": 4 }, "e": { "c": 8, "r": 4 } }, { "s": { "c": 0, "r": 0 }, "e": { "c": 3, "r": 1 } }] // cellMergescjn } for (let i = 0; i < cell.length; i++) { // drawAllCellBordercjn data[cell[i]] = { "v": "", "s": { "border": { "left": { "style": "medium" }, "right": { "style": "medium" }, "top": { "style": "medium" }, "bottom": { "style": "medium" } } } } } // thereGiveCellValuecjn data.A1 = { "t": "s", "v": "HAOSEN", "s": { "alignment": { "vertical": "center", "horizontal": "center" }, "font": { "sz" : 20, "bold": true }, "border": { "left": { "style": "medium", "color": { "auto": 1 } }, "right": { "style": "medium", "color": { "auto": 1 } }, "top": { "style": "medium", "color": { "auto": 1 } }, "bottom": { "style": "medium", "color": { "auto": 1 } } } } }, data.E1 = { "t": "s", "v": "工艺、定额卡", "s": { "alignment": { "vertical": "center", "horizontal": "center" }, "font": { "sz" : 20, "bold": true }, "border": { "left": { "style": "medium", "color": { "auto": 1 } }, "right": { "style": "medium", "color": { "auto": 1 } }, "top": { "style": "medium", "color": { "auto": 1 } }, "bottom": { "style": "medium", "color": { "auto": 1 } } } }, }, data.F1 = { "t": "s", "v": "零件图号", "s": { "border": { "left": { "style": "medium", "color": { "auto": 1 } }, "right": { "style": "medium", "color": { "auto": 1 } }, "top": { "style": "medium", "color": { "auto": 1 } }, "bottom": { "style": "medium", "color": { "auto": 1 } } } } }, data.G1 = { "t": "s", "v": Data[0].零件图号, "s": { "border": { "left": { "style": "medium", "color": { "auto": 1 } }, "right": { "style": "medium", "color": { "auto": 1 } }, "top": { "style": "medium", "color": { "auto": 1 } }, "bottom": { "style": "medium", "color": { "auto": 1 } } } } }, data.F2 = { "t": "s", "v": "零件名称", "s": { "border": { "left": { "style": "medium", "color": { "auto": 1 } }, "right": { "style": "medium", "color": { "auto": 1 } }, "top": { "style": "medium", "color": { "auto": 1 } }, "bottom": { "style": "medium", "color": { "auto": 1 } } } } }, data.G2 = { "t": "s", "v": Data[0].零件名称, "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.H2 = { "t": "s", "v": "数量", "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.I2 = { "t": "n", "v": Data[0].投产数量, "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.A3 = { "t": "s", "v": "大连豪森设备制造有限公司", "s": { "alignment": { "vertical": "center", "horizontal": "center" }, "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.F3 = { "t": "s", "v": "材料", "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.H3 = { "t": "s", "v": "原材料规格", "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.A4 = { "t": "s", "v": "机床号", "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.B4 = { "t": "s", "v": Data[0].机床图号, "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.C4 = { "t": "s", "v": "组号", "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.D4 = { "t": "s", "v": Data[0].组号, "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.F4 = { "t": "s", "v": Data[0].材料, "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.A5 = { "t": "s", "v": "序次", "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.B5 = { "t": "s", "v": "工艺名称", "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.D5 = { "t": "s", "v": "工艺要求", "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.H5 = { "t": "s", "v": "定额工时", "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.H6 = { "t": "s", "v": "单件", "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.I6 = { "t": "s", "v": "准结", "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.A27 = { "t": "s", "v": "工艺员", "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.B27 = { "t": "s", "v": Data[0].工艺员, "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.D27 = { "t": "s", "v": "定额员", "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.E27 = { "t": "s", "v": Data[0].定额员, "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.F27 = { "t": "s", "v": "日期", "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } }, data.G27 = { "t": "n", "v": Data[0].工艺实际完成时间, "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } } for (let i = 0; i < Data.length; i++) { data['A' + (i + 7)] = { "v": i + 1, "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } } data['B' + (i + 7)] = { "v": Data[i].工艺名称, "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } } data['D' + (i + 7)] = { "v": Data[i].工艺要求, "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } } data['H' + (i + 7)] = { "v": Data[i].单件定额工时, "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } } data['I' + (i + 7)] = { "v": Data[i].准结定额工时, "s": { "border": { "left": { "style": "medium", }, "right": { "style": "medium", }, "top": { "style": "medium", }, "bottom": { "style": "medium", } } } } } data['!cols'] = [{'wch': 8},{'wch': 12},{'wch': 8},{'wch': 12},{'wch': 20},{'wch': 8},{'wch': 8},{'wch': 8},{'wch': 8}] var wb = { SheetNames: ['Sheet1'], Sheets: {}, Props: {} }; wb.Sheets['Sheet1'] = data var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'}); saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), Title + ".xlsx"); }