RichText 单元格 Exceljs 中的自定义对齐方式

问题描述

"exceljs": "^3.9.0"

我需要创建一个电子表格,其中的单元格具有 2 个不同的值,如下所示。 第一个值需要左对齐,第二个值需要右对齐。

IMAGE

我现在的结果是:

IMAGE

这是我没有“/”的单元格的富文本

    [
  {
    "font": {
      "size": 8,"name": "Arial"
    },"alignment": {
      "vertical": "middle","horizontal": "distributed"
    },"text": "392.3 "
  },{
    "font": {
      "color": {
        "argb": "00c90a00"
      },"size": 8,"text": " -10%"
  }
]

和带有“/”的单元格的富文本

    [
  {
    "font": {
      "size": 8,{
    "font": {
      "size": 8,"text": " / "
  },"text": " -10%"
  }
]

是否可以做第一个屏幕截图的样子?

解决方法

是否可以做第一个屏幕截图的样子?

是的,这是可能的,尽管您无法在同一单元格中以不同方式对齐文本。它不适用于 Excel 本身,因此绝对不适用于 ExcelJS!有数百篇文章在询问有关 Excel 的问题,但其中一句话一针见血:

与 Word 不同,Excel 没有单元格内的段落概念。水平和垂直对齐适用于整个单元格。

引用来自用户 Hansv MVP 的来自 this thread

您可以通过不同的方式来处理该项目,具体取决于哪种方式最适合您:

  • Split the cells 与数据。 ExcelJS 确实有 .spliceRows() function,因此您可以使用它(在各个单元格上使用 RichText 格式)。
  • 您可以从一开始就实现写入的逻辑,即在一个单元格中实现一部分数据,然后在单元格中实现下一部分数据,依此类推。之后,您可以to color the border 将相邻数据设置为背景颜色,从而将其消失。

我强烈建议第二种方法。在我看来,这应该是最简单的解决方案,因为您可以正确设置“格式化逻辑”,让您可以自由地使用您正在编写的每个值。