You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript(Node.js/TS)生成带合并多行表头的XLSX文件?

问题解答
  1. 是否可用JavaScript编程实现该需求?
    完全可以。JavaScript/TypeScript结合专门的Excel处理库,能够实现包括单元格合并、复杂表头样式、格式设置等Excel高级功能,完全可以复刻手动创建的Excel文件格式。

  2. 推荐可用包及示例

推荐包1:xlsx-populate

这个库专注于Excel文件的格式与内容编辑,对单元格合并、样式设置的支持非常直观,适合快速复刻带复杂表头的Excel文件。

TS示例代码:

import XlsxPopulate from 'xlsx-populate';

async function generateExcel() {
    // 创建空白工作簿
    const workbook = await XlsxPopulate.fromBlankAsync();
    const sheet = workbook.sheet(0);

    // 设置第1行合并表头(A1到D1合并)
    sheet.range('A1:D1').merge();
    sheet.cell('A1').value('主表头').style({
        bold: true,
        horizontalAlignment: 'center',
        verticalAlignment: 'center'
    });

    // 设置第2行子表头(A2-B2合并,C2-D2合并)
    sheet.range('A2:B2').merge();
    sheet.cell('A2').value('子表头1').style({bold: true, horizontalAlignment: 'center'});
    sheet.range('C2:D2').merge();
    sheet.cell('C2').value('子表头2').style({bold: true, horizontalAlignment: 'center'});

    // 填充数据行
    sheet.cell('A3').value('数据1');
    sheet.cell('B3').value('数据2');
    sheet.cell('C3').value('数据3');
    sheet.cell('D3').value('数据4');

    // 保存文件
    await workbook.toFileAsync('./复刻的表格.xlsx');
}

generateExcel();

推荐包2:exceljs

这是一个功能全面的Excel处理库,支持流式读写,对样式、合并、公式等都有良好支持,适合需要处理大数据或复杂格式的场景。

TS示例代码:

import ExcelJS from 'exceljs';

async function generateExcel() {
    const workbook = new ExcelJS.Workbook();
    const sheet = workbook.addWorksheet('Sheet1');

    // 设置第1行合并表头
    sheet.mergeCells('A1:D1');
    const mainHeader = sheet.getCell('A1');
    mainHeader.value = '主表头';
    mainHeader.font = {bold: true};
    mainHeader.alignment = {horizontal: 'center', vertical: 'middle'};

    // 设置第2行子表头
    sheet.mergeCells('A2:B2');
    const subHeader1 = sheet.getCell('A2');
    subHeader1.value = '子表头1';
    subHeader1.font = {bold: true};
    subHeader1.alignment = {horizontal: 'center'};

    sheet.mergeCells('C2:D2');
    const subHeader2 = sheet.getCell('C2');
    subHeader2.value = '子表头2';
    subHeader2.font = {bold: true};
    subHeader2.alignment = {horizontal: 'center'};

    // 添加数据行
    sheet.addRow(['数据1', '数据2', '数据3', '数据4']);

    // 保存文件
    await workbook.xlsx.writeFile('./复刻的表格.xlsx');
}

generateExcel();

注:你之前使用的xlsx(SheetJS)包主要侧重数据的解析与导出,对复杂格式的支持有限,所以无法满足表头合并等格式需求,上述两个库则专门针对Excel的格式定制做了优化。

内容的提问来源于stack exchange,提问作者Michael Roskin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 15:53:11