#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. да! Спасибо. Я вернулся и использовал метод слияния ячеек. отлично работает!