我想在 nodeJS 应用程序中编写 excel 文件时实现下面显示的嵌套结构。我无法理解如何进行。有没有办法定义多级标头或任何 JSON 都可以使用它来实现这种结构。
问问题
3754 次
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 回答