3

我想在 nodeJS 应用程序中编写 excel 文件时实现下面显示的嵌套结构。我无法理解如何进行。有没有办法定义多级标头或任何 JSON 都可以使用它来实现这种结构。
在此处输入图像描述

4

2 回答 2

1

对于 SheetJS,我可以通过一些解决方法来实现它。

假设我们正在尝试实现这种表格格式

在此处输入图像描述

首先,我添加了空行,这将为我们的标题让路。

    // lets say this is our JSON data
    const workers = [{'Name':'George', 'Height':'69', 'Weight':'112'},
                     {'Name':'John', 'Height':'71', 'Weight':'120'}]
    // we add empty rows in the beginning
    workers.unshift({'Name':'', 'Height':'', 'Weight':''},
                    {'Name':'', 'Height':'', 'Weight':''})

然后我们需要隐藏标题(通常是我们的 JSON 的键)。

    // Hide headers by adding skipHeader: true
    const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(food, {skipHeader: true})

然后我们现在可以填写空行。(手动..)

    ws.A1={t: 's', v: 'Name'}
    ws.B1={t: 's', v: 'Measurements'}
    ws.B2={t: 's', v: 'Height'}
    ws.C2={t: 's', v: 'Weight'}

最后我们合并单元格。

    // s - start, e - end, r - row, c - col (0 based)
    const merge = [{ s: { r: 0, c: 0 }, e: { r: 1, c: 0 } }, // Name
                   { s: { r: 0, c: 1 }, e: { r: 0, c: 2 } }  // Measurements
    ws['!merges'] = merge;
于 2020-07-09T06:11:56.143 回答
0

1.xlsx-renderer方式:

https://github.com/Siemenik/xlsx-renderer/

使用 exceljs 或 sheetjs 来做这件事可能会有很大的问题,它更容易使用xlsx-renderer,它将模板与数据分开:

在此处输入图像描述

和数据{..}给出:

在此处输入图像描述

顺便提一句。Xlsx-renderer 由 ExcelJS 提供支持。

2. ExcelJs方式:

https://github.com/exceljs/exceljs#merged-cells

worksheet.mergeCells('A1:A3');
worksheet.getCell('A1').value = "Process Flag";
worksheet.mergeCells('B1:B3');
worksheet.getCell('B1').value = "Response";
worksheet.mergeCells('C1:F1');
worksheet.getCell('C1').value = "...";
worksheet.mergeCells('C2:C3');
worksheet.getCell('C2').value = "...";
worksheet.mergeCells('D2:D3');
worksheet.getCell('D2').value = "...";
worksheet.mergeCells('E2:E3');
worksheet.getCell('E2').value = "...";
//...

3.SheetJS方式:

您必须使用 进行操作worksheet['!merges'],但描述得非常糟糕...... :( https://github.com/SheetJS/sheetjs#worksheet-object

于 2020-05-11T19:29:08.237 回答