前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用xlsx导出excel表格如何合并表格

用xlsx导出excel表格如何合并表格

原创
作者头像
挥刀北上
发布2022-01-07 18:35:44
4.2K0
发布2022-01-07 18:35:44
举报
文章被收录于专栏:Node.js开发Node.js开发

在使用xlsx导出excel表格的时候,有时候我们需要将某些表格进行合并,该如何做呢,代码如下:

代码语言:javascript
复制
import XLSX from 'xlsx';
// ...
// xlsxData 是 Excel 的内容
const workSheet = XLSX.utils.aoa_to_sheet(xlsxData);
const workbook = XLSX.utils.book_new();
// 设置工作表的记录范围
// [列号][行号],A1 则代表 A 列的第1行
// 列数一般是已知的(未知时可以设置为ZZ)
// 行数则以 xlsxData 内容的长度结束即可
workSheet['!ref'] = `A1:AI${xlsxData.length}`;
// s 意为 start ,即开始的单元格
// r 是 row ,表示行号,从 0 计起
// c 是 col ,表示列号,从 0 计起
const merge = [
  // 纵向合并,范围是第1列的行1到行2
  { s: { r: 0, c: 0 }, e: { r: 1, c: 0 } },
  // 纵向合并,范围是第2列的行1到行2
  { s: { r: 0, c: 1 }, e: { r: 1, c: 1 } },
  // 横向合并,范围是第1行的列3到列5
  { s: { r: 0, c: 2 }, e: { r: 0, c: 4 } },
  // 横向合并,范围是第1行的列6到列11
  { s: { r: 0, c: 5 }, e: { r: 0, c: 10 } },
  // 横向合并,范围是第1行的列12到列17
  { s: { r: 0, c: 11 }, e: { r: 0, c: 16 } },
  // 横向合并,范围是第1行的列18到列23
  { s: { r: 0, c: 17 }, e: { r: 0, c: 22 } },
  // 横向合并,范围是第1行的列24到列29
  { s: { r: 0, c: 23 }, e: { r: 0, c: 28 } },
  // 横向合并,范围是第1行的列30到列35
  { s: { r: 0, c: 29 }, e: { r: 0, c: 34 } }
];
workSheet['!merges'] = merge;
// sheet0 是工作表的名称
XLSX.utils.book_append_sheet(workbook, workSheet, 'sheet0');
// 执行数据转换文件写入
XLSX.writeFileSync(workbook, '文档名称', {
  bookType: 'xlsx',
  bookSST: true,
  type: 'array'
});

解读代码,我们使用XLSX.utils.aoa_to_sheet生成了一张表之后,只需要设置这张表的['!merges']属性,设置的内容如下:

代码语言:javascript
复制
const merge = [
  // 纵向合并,范围是第1列的行1到行2
  { s: { r: 0, c: 0 }, e: { r: 1, c: 0 } },
  // 纵向合并,范围是第2列的行1到行2
  { s: { r: 0, c: 1 }, e: { r: 1, c: 1 } },
  // 横向合并,范围是第1行的列3到列5
  { s: { r: 0, c: 2 }, e: { r: 0, c: 4 } },
  // 横向合并,范围是第1行的列6到列11
  { s: { r: 0, c: 5 }, e: { r: 0, c: 10 } },
  // 横向合并,范围是第1行的列12到列17
  { s: { r: 0, c: 11 }, e: { r: 0, c: 16 } },
  // 横向合并,范围是第1行的列18到列23
  { s: { r: 0, c: 17 }, e: { r: 0, c: 22 } },
  // 横向合并,范围是第1行的列24到列29
  { s: { r: 0, c: 23 }, e: { r: 0, c: 28 } },
  // 横向合并,范围是第1行的列30到列35
  { s: { r: 0, c: 29 }, e: { r: 0, c: 34 } }
];

这是一个数组,数组每一项为一个对象,对象有两个属性,s和e,分别代表start和end,值分别为一个对象,r代表行,c代表列,可以理解为坐标,在excel中只要确定了要合并区域的开始坐标和结束坐标就确定合并未知了。

以上便是使用xlsx导出excel表格时合并单元格的用法,希望对你有所帮助。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档