使用 xlsx 下载 xlsx 文件:
import { writeFileXLSX, utils } from 'xlsx';
export const downloadSheet = (dataSource: any[], sheetName?: string) => {
const workbook = utils.book_new();
const workSheet = utils.json_to_sheet(dataSource);
// TODO: 根据接口合并行列,计算第一行和第二行的
// 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 是工作表的名称
utils.book_append_sheet(workbook, workSheet, 'Sheet1');
writeFileXLSX(workbook, sheetName || 'mySheet.xlsx', {
bookType: 'xlsx',
});
};