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

相关文章

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

jvm调优常用命令行工具详解

《jvm调优常用命令行工具详解》:本文主要介绍jvm调优常用命令行工具的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一 jinfo命令查看参数1.1 查看jvm参数二 jstack命令2.1 查看现场堆栈信息三 jstat 实时查看堆内存,gc情况3.1

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批