Пользовательское выравнивание в ячейках с богатым текстом Exceljs

#javascript #exceljs

#javascript #exceljs

Вопрос:

«exceljs»: «^ 3.9.0»

Мне нужно создать электронную таблицу с ячейками, которые имеют 2 разных значения, которые выглядят следующим образом. Первое значение должно быть выровнено по левому краю, а второе значение должно быть выровнено по правому краю. ИЗОБРАЖЕНИЕ

Мой результат прямо сейчас: ИЗОБРАЖЕНИЕ

Вот мой расширенный текст для ячеек без «/»

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

И RichText для ячейки с «/»

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

Возможно ли сделать так, как выглядит первый скриншот?

Комментарии:

1. У вас не может быть двух разных выравниваний в одной ячейке. Вам нужно будет создать две отдельные ячейки и указать разные выравнивания для каждой.

2. комментарий @jdaz верен. Когда у вас есть два столбца, вы можете оформить их так, чтобы они выглядели как одна ячейка.

3. знаете ли вы, как создать 2 ячейки в одном столбце?

Ответ №1:

Возможно ли сделать так, как выглядит первый скриншот?

Да, это возможно, хотя вы не можете выровнять текст по-разному в одной и той же ячейке. Это невозможно с самим Excel и, следовательно, определенно не с ExcelJS! Существуют сотни статей, в которых задается вопрос об Excel, но одна цитата попадает в точку:

В отличие от Word, Excel не имеет понятия абзацев внутри ячейки. Горизонтальное и вертикальное выравнивание применяется ко всей ячейке в целом.

Цитата взята у пользователя Hansv MVP из этой темы.

Вы можете подойти к проекту разными путями, в зависимости от того, что подходит вам больше всего:

  • Разделите ячейки с данными. У ExcelJS есть .spliceRows() функция, поэтому вы можете использовать ее (с форматированием RichText в соответствующих ячейках).
  • Вы могли бы реализовать логику для записи с самого начала, т. Е. Реализовать одну часть данных в одной ячейке, следующую часть в ячейке после этого и так далее. После этого вы сможете окрасить границу соседних данных в свой цвет фона, тем самым исчезая.
  • и т.д.

Я настоятельно рекомендую второй подход. На мой взгляд, это должно быть самым простым решением, поскольку вы можете правильно настроить «логику форматирования» в смысле свободы для каждого значения, которое вы пишете.

Комментарии:

1. @texas697 Надеюсь, это помогло вам! Дайте мне знать, если что-то неясно 🙂

2. да! Спасибо. Я вернулся и использовал метод слияния ячеек. отлично работает!