Files
QingAnVue2TV/src/vendor/Export2Excel1.js
DaLuJia Developer 2abd286d42 Initial commit: 大陆架零部件智能生产线数字孪生系统
- 实现TV1和TV2双大屏展示
- 集成ECharts数据可视化
- 实现实时数据刷新机制
- 添加刀具寿命管理模块
- 添加工单加工时长统计模块
- 添加加工中心7日工作时长统计模块
- 添加OEE分析、设备状态监控等功能
- 创建技术文档和使用说明书
2026-05-21 09:19:09 +08:00

1444 lines
25 KiB
JavaScript

/* 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");
}