React xlsx(工具库) 处理表头合并

2023-10-08 22:01

本文主要是介绍React xlsx(工具库) 处理表头合并,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前端导出excel表格
引入xlsx插件,不然应该是运行不起来的(xlsx无 样式)
样式使用 xlsx-js-style 或 xlsx-style

npm i xlsx
xlsx中文文档

插件2 exceljs
npm i exceljs
exceljs中文文档

导出

例子

在这里插入图片描述

import { ExportExcel } from './exportExcel/index';const columns=[{title: 'id',dataIndex: 'item1',},{title: '序号',dataIndex: 'item2',},{title: '合并列1-2',dataIndex: 'a1',children: [{title: '合并列1',dataIndex: 'data1',},{title: '合并列2',dataIndex: 'data2',},],}]//下方 '' 值为要合并项,主体值('合并列1-2')放前面,或放上面('id')//将表头拆为两行//若要加一个表头(xxxx表格),则为三行 titleArr.splice(0, 0, ['xxxx表格','','']);const titleArr=[['id','序号','合并列1-2',''],['','','合并列1','合并列2']];// 合并
// s 意为 start ,即开始的单元格
// r 是 row ,表示行号,从 0 计起
// c 是 col ,表示列号,从 0 计起 
// e 意为 end,结束
const merges=[
{s:{c:0,r:0},e:{c:0,r:1}}, //合并第一列 第1行至第2行
{s:{c:0,r:2},e:{c:0,r:3}},// 合并第一行  第3个至第4个
]let dataSource=[
{item1:'0',item2:'1',data1:'2',data2:'3'},
{item1:'0',item2:'1',data1:'2',data2:'3'}]<Buttontype="primary"ghostonClick={() =>ExportExcel(columns,dataSource,`sheet页名自定义`,`fileName 文件名称自定义`,'xls',titleArr,merges)}
>导出
</Button>

ExportExcel函数封装

import XLSX from 'xlsx';
/*** zy* @param {*} label 表头-必填-例[{ title: '单位',dataIndex: 'item6',},]* @param {*} data 数据-必填-例[['0001','2017001','天'],['0002','2017002','干']],* @param {*} sheetName sheet页名* @param {*} fileName 文件名称* @param {*} fileType 文件类型-暂只使用xlsx,xls* @param {*} titleArr 表头-必填-例 [['编码','编号','备注']],默认二维数组[[]]* @param {*} merges 合并-选填-{s:{c:0,r:0},e:{c:2,r:0}}, //合并第一行 第1个至第3个*/export const ExportExcel= (label,data,sheetName,fileName,fileType,titleArr = [[]],merges = []
) => {sheetName = sheetName || 'sheet1';fileName = fileName || '导出表';fileType = fileType || 'xls';//组织数据let dataArr = [];let dataIndexArr = [];label.forEach((item) => {//根据自身实际情况处理 childrenif (item?.children && item.children.length) {item.children.forEach((item2) => {dataIndexArr.push(item2.dataIndex);});} else {dataIndexArr.push(item.dataIndex);}});data.forEach((item) => {let itemArr = [];dataIndexArr.forEach((x) => {itemArr.push(item[x]);});dataArr.push(itemArr);});//可以看成一个整体,表头和报表数据都是excel数据,每一行都是一个数组,// 表头在excel顶部 所以表头放最前面 splice(0,0,[])dataArr.splice(0, 0, ...titleArr);//创建新文件var newFile = XLSX.utils.book_new();//新sheetvar newFileSheet = XLSX.utils.aoa_to_sheet(dataArr);//合并newFileSheet['!merges'] = merges;//sheet添加到文件XLSX.utils.book_append_sheet(newFile, newFileSheet, sheetName);// 导出 ExcelXLSX.writeFile(newFile, `${fileName}.xls`);
};

总结

  1. XLSX.utils.book_new()创建新文件
  2. XLSX.utils.aoa_to_sheet 新sheet表
  3. merges数组表示对行和列进行合并,c表示column(列),r表示row(行),s表示start(开始),e表示end(结束),索引从0开始

这篇关于React xlsx(工具库) 处理表头合并的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/168270

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插

在Java中将XLS转换为XLSX的实现方案

《在Java中将XLS转换为XLSX的实现方案》在本文中,我们将探讨传统ExcelXLS格式与现代XLSX格式的结构差异,并为Java开发者提供转换方案,通过了解底层原理、性能优势及实用工具,您将掌握... 目录为什么升级XLS到XLSX值得投入?实际转换过程解析推荐技术方案对比Apache POI实现编程

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结