用于创建格式化 XLSX 电子表格的 JS 库

use*_*616 3 javascript excel xlsx meteor sheetjs

我目前正在使用https://www.npmjs.com/package/xlsx在 JS 中创建通用电子表格。这可以很好地生成一个通用电子表格来显示我的数据。但是,我想添加一些功能。

https://imgur.com/a/gJE9mXg是我想要实现的一个例子。它是使用 Apache POI 创建的,仅适用于 Java。

我想要在该屏幕截图中的功能是

  1. 添加图片的能力(在左上角显示为徽标)
  2. 能够更改字体颜色(如中心的标题所示)
  3. 能够居中对齐文本(如中心的子标题所示)
  4. 使字段可排序的能力(如每列的箭头按钮所示)

似乎 SheetJS 可以通过他们的高级版本提供一些这样的功能。https://dzone.com/articles/5-popular-standalone-javascript-spreadhsheet-libra是我研究过的其他库的列表。然而,该列表似乎更像是用原生 JS 对象模拟电子表格,而不是创建 .xlsx 文件。此外,它们中的大多数都需要付费许可证。

有人有使用免费 JS 解决方案创建我的 4 个需求的经验吗?顺便说一句,我正在 Meteor JS 上构建。

如果没有,是否还有其他解决方法来实现这一目标?即让应用程序只输出一个 .csv,然后创建一个通用的 excel“模板”文件,该文件将使用 csv 进行所有格式化?或者,委托其他程序/脚本生成 XLSX 并下载输出文件。

谢谢

Har*_*del 10

exceljs拥有你想要的所有功能,它只是有一个稍微不同的 API,不像xlsx那样流行,这就是为什么它总是在雷达下飞行。

  • 是的,它基本上是一个隐藏的宝石。如果您想下载 xlsx 文件,可以在这里尝试此方法:https://github.com/exceljs/exceljs/issues/342#issuecomment-481225998 (2认同)
  • 是的,我基本上就是这样做的 wb.xlsx.writeBuffer() .then(buffer => { // buffer --> blob const blob = new Blob([buffer], { type: "application/vnd. ms-excel" }) let link = document.createElement('a') link.download = 'download.xlsx' link.target = 'blank' // blob --> url link.href = URL.createObjectURL(blob) link.click() }) .catch(err => { throw err }); 经过大量的试验和错误才将其移植到 dl 浏览器端。我必须使用他们的浏览器库,它有很多依赖项 (2认同)