vue exporta datos de la tabla de encabezados de varios niveles a Excel
Paso 2: modifique el código fuente en export2Excel.js El ejemplo de este. el artículo es de nivel 3. El encabezado se puede modificar según sea necesario
//El código fuente aquí ha sido modificado.
export?function?export_json_to_excel(excelData,?autoWidth?=?true,?bookType?=?' xlsx')?{
?/*Let multiHeader = excelData.multiHeader; ?//?Encabezado de primer nivel
?let?multiHeader2?=?excelData.multiHeader2;?//?Encabezado de segundo nivel
?let?header?=?excelData. tHeader;?//?Título de tercer nivel
?let?data?=?excelData.transData;?//Datos de tabla
Let defaultTitle =?excelData.defaultTitle;?/ /?título de la tabla de Excel
?//?celdas fusionadas de la tabla de Excel
?//?console.log(multiHeader);
?//? .log(multiHeader2);
?//?console.log(encabezado);
?//?console.log(data);
? //?console.log(defaultTitle);
?//?console.log(merges);
?data.unshift(header);
?// Esta es la segunda línea del título
* for(let?i?=?multiHeader2.length?-?1;?i?gt;? -1;?i--)? {
data.unshift(multiHeader2[i])
?}
?// Este es el comienzo de la primera línea
* for(let?i?=?multiHeader.length?){
data.unshift(multiHeader[i])
?}
var? SheetJS";
var?wb?=?new?Workbook(),
ws?=?sheet_from_array_of_arrays(data);
?//Fusionar Excel celda y establezca el ancho de la tabla
if (merges.length?gt;?0)?{
if(!ws['!merges'])?ws['!merges ']? =?[];
merges.forEach(item?=gt;?{
?ws['!merges'].push(XLSX.utils.decode_range( elemento))
})
?}
si (ancho automático)? {
/* Establece el ancho máximo de cada columna en la hoja de trabajo*/
const?colWidth?=?data.map(row?=gt;?row.map(val ? =gt;?{
?/* Primero determine si es nulo/indefinido**
If (val?==?null)?{
Devolver {
?' ¿Qué?: ?10
};
?}
?/* Determinar si es chino nuevamente**
* else if(val.toString().charCodeAt(0) ? {
Devolver {
'wch':?val.toString().length?*?2
};
}else{
return{
?' wch':?val.toString().length
}
}
?
}))
/* Utilice la primera línea como valor inicial**
let?{ p>
?for?(let?j?=?0;?j?lt;?colWidth[i].length;?j )?{
if(resultado[j][' ¿wch' ]?lt;?colWidth[i][j]['wch'])?{
?resultado[j]['wch'] =?colWidth[i][j][ 'wch '];
}
?}
}
ws['!cols'] =?resultado;
?}
?//-------------------------------- -- -----------------------
?/*?agregar?hoja de trabajo?al?libro de trabajo?*/
?wb.SheetNames.push(ws_name);
?wb.Sheets[ws_name]? =?ws;
?var?wbout?=?{
bookType: ?xlsx',
bookType: ?xlsx',
bookSST: ?false,
type: ?binario' p>
? }) ;
?var?title?=?defaultTitle?||?List'
?saveAs(new?Blob([s2ab(wbout)] , {
tipo: ?" aplicación/octeto-stream"
?}), ?título? ?" .xlsx")
}
Paso 3: Agregar elementos y métodos en los métodos de la página
lt;Button?type="success"?style="margin-right: 5px;"?@click="exportmulti"gt; exportlt; /Buttongt;
exportmulti()?{
?import("@/exportExcel/Export2Excel2").then(excel?=gt;?{
const?multiHeader?=?[
?
""",
""",
""",
p>""",
""",
""",
""",
" "",
""",
""",
""",
""" ,
"""
,
""",
""",
""",
""",
?]
];
const?multiHeader2?=?[
?[
"",
"Plataforma comercial de cuenta oficial de WeChat",
"Plataforma comercial abierta de WeChat",
"Alipay",
"Total",
"Antes del 1 de septiembre de 2016",
"",
"1 de septiembre de 2016 - 31 de diciembre de 2017".
"",
"2018.1.1-2019.12.31",
"",
"Después de 2020.1.1" ,
"",
"Total",
"Antes de 2016.9.1",
"2016.9.1-2019.12. 31". 1",
"",
" 2016.9.1-2017.12.31",
"",
"",
"",
"",
"",
"",
"",
"",
"", "Total"
?"];
];
"Total"
?
]
const?tHeader?=?[
?"" ,
?"" ,
?"" ,
?"" ,
?"" ,
?"" ,
?"" ,
?"".
WeChat",
? "Alipay",
? WeChat",
? "Alipay",
? /p>
?WeChat",
?"Alipay",
?Alipay",
?WeChat",
?"Alipay",
?Alipay",
?WeChat",
?"Alipay",
?" ? "Alipay",
? "WeChat",
? "Alipay",
? p>
?"Alipay",
?Alipay",
?WeChat",
?"Alipay",
?Alipay",
?
];
///?table corresponde a campos importados
const?filterVal? =? [
?"Nombre de la empresa",
?"eWeChatMountApp",
?"eWeChatMountApp",
?" eAlipay ",
?" eTotal",
? " reWeChatBefore",
? " reAlipayBefore",
" reWeChatBe", ? p>
?" reAlipayBe",
? " reWeChatBe",
? " reAlipayBe",
" reWeChatTe",
? p>
?" reAlipayTe",
? " reWeChatAf ",
? " reAlipayAf ",
?
?"deWeChatBefore",
?"deAlipayBefore",
?"deWeChatBe",
?"deAlipayBefore", p>
?" deWeChatBe",
?" deAlipayBe",
?" deWeChatTe",
?" deAlipayTe",
? " deWeChatAf",
?" deAlipayAf",
?" deTotal"
];
let?list ?=?this .capitalStatementData;
// Conversión de datos de tabla
const?data?=?this.formatJson(filterVal,?list);
// Fusionar celdas en todos los encabezados de la tabla. Se recomienda fusionar fila por fila; de lo contrario, es fácil cometer errores.
const?merges?=?[
?"A1:A3",
?" ?B1:E1",
?" ?B2:B3",
?" ?C2 :C3",
?" ?D2:D3",
?"E2:E3",
?E2:E3",
?"F1:N1",
?
F1: N1",
? " F2: G2",
? F2: G2",
? " H2: I2",
?H2:I2",
?"J2:K2",
?J2:K2",
?"L2:M2",
? L2: M2",
?" ?N2: N3",
?" O1: W1",
?O1: W1",
?"O2:P2",
?O2:P2",
?"Q2:R2",
?O2:P2" ,
?"Q2:R2",
?"S2:T2",
?S2:T2",
? "U2:V2",
?U2:V2",
?" > ];
//Exportar una tabla de Excel con título
const?defaultTitle?=?"Estadísticas de fondos por negocio";
///? Pasar parámetros en orden
excel.export_json_to_excel({
?multiHeader,?//Aquí está el encabezado de la tabla para la primera fila
?multiHeader2,?//Aquí está el encabezado de la tabla para la segunda fila
?tHeader,?//Aquí debe contarse el encabezado de la tercera fila
?data ,?/ /?Datos de la tabla
?defaultTitle,?//Nombre de la tabla de Excel
?merges?//?Fusionar celdas de Excel
}) ;
?}) )
},
/*?Convierta los datos de la tabla para exportarlos correctamente
------ ---- ---------------------------------------------- ---- -------*/
formatJson(filterVal, ? jsonData)?{
?return?jsonData.map(v?=gt;
p>filterVal.map(j?=gt;?{
If (j!==? "companyName")?{
return parseTime(v[j] );
?} En caso contrario, {
devuelve v[j];
})
?
},
);