## Распространенные проблемы и их решения

### 1. Пустые столбцы и ячейки в шаблонах Excel исчезают при рендеринге

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

**Решения**:

- **Заполните фоновым цветом**: Заполните пустые ячейки в целевой области фоновым цветом, чтобы они оставались видимыми в процессе рендеринга.
- **Вставьте пробел**: Вставьте символ пробела в пустые ячейки, чтобы сохранить структуру ячейки даже при отсутствии фактического содержимого.
- **Установите границы**: Добавьте стили границ к таблице, чтобы улучшить видимость границ ячеек и предотвратить их исчезновение во время рендеринга.

**Пример**:

В шаблоне Excel установите светло-серый фон для всех целевых ячеек и вставьте пробелы в пустые ячейки.

### 2. Объединенные ячейки некорректно отображаются при выводе

**Описание проблемы**: При использовании функции цикла для вывода таблиц, объединенные ячейки в шаблоне могут привести к аномальным результатам рендеринга, таким как потеря эффекта объединения или смещение данных.

**Решения**:

- **Избегайте использования объединенных ячеек**: Старайтесь не использовать объединенные ячейки в таблицах, выводимых в цикле, чтобы обеспечить корректный рендеринг данных.
- **Используйте выравнивание по центру по выделению**: Если вам нужно выровнять текст по горизонтали по центру в нескольких ячейках, используйте функцию «Выровнять по центру по выделению» вместо объединения ячеек.
- **Ограничьте расположение объединенных ячеек**: Если использование объединенных ячеек необходимо, объединяйте их только над таблицей или справа от нее, избегая объединения снизу или слева, чтобы предотвратить потерю эффекта объединения во время рендеринга.

### 3. Содержимое под областью циклического рендеринга вызывает нарушение форматирования

**Описание проблемы**: В шаблонах Excel, если под областью, которая динамически расширяется при циклическом рендеринге данных (например, детали заказа), расположено другое содержимое (например, сводка заказа, примечания), то при рендеринге сгенерированные циклом строки данных будут расширяться вниз. Это может привести к перезаписи или смещению статического содержимого, расположенного ниже, вызывая нарушение форматирования и наложение элементов в итоговом документе.

**Решения**:

  * **Измените макет, поместите область цикла внизу**: Это наиболее рекомендуемый метод. Разместите область таблицы, требующую циклического рендеринга, в нижней части всего рабочего листа. Переместите всю информацию, которая изначально находилась под ней (сводка, подписи и т.д.), над областью цикла. Таким образом, данные цикла смогут свободно расширяться вниз, не затрагивая другие элементы.
  * **Зарезервируйте достаточное количество пустых строк**: Если содержимое должно быть размещено под областью цикла, вы можете оценить максимальное количество строк, которое может сгенерировать цикл, и вручную вставить достаточное количество пустых строк в качестве буфера между областью цикла и содержимым ниже. Однако этот метод имеет риски: если фактические данные превысят расчетное количество строк, проблема возникнет снова.
  * **Используйте шаблоны Word**: Если требования к макету сложны и не могут быть решены путем корректировки структуры Excel, рассмотрите возможность использования документов Word в качестве шаблонов. Таблицы в Word автоматически сдвигают содержимое вниз при увеличении количества строк, избегая проблем с наложением содержимого, что делает их более подходящими для создания таких динамических документов.

**Пример**:

**Неправильный подход**: Размещение информации «Сводка заказа» непосредственно под таблицей «Детали заказа», обрабатываемой в цикле.
![20250820080712](https://static-docs.nocobase.com/20250820080712.png)

**Правильный подход 1 (Изменение макета)**: Переместите информацию «Сводка заказа» над таблицей «Детали заказа», сделав область цикла нижним элементом страницы.
![20250820082226](https://static-docs.nocobase.com/20250820082226.png)

**Правильный подход 2 (Резервирование пустых строк)**: Зарезервируйте много пустых строк между «Деталями заказа» и «Сводкой заказа», чтобы обеспечить достаточное пространство для расширения содержимого цикла.
![20250820081510](https://static-docs.nocobase.com/20250820081510.png)

**Правильный подход 3**: Используйте шаблоны Word.

### 4. Появляются сообщения об ошибках во время рендеринга шаблона

**Описание проблемы**: Во время рендеринга шаблона система отображает сообщения об ошибках, что приводит к сбою рендеринга.

**Возможные причины**:

- **Ошибки в плейсхолдерах**: Имена плейсхолдеров не соответствуют полям набора данных или содержат синтаксические ошибки.
- **Отсутствие данных**: В наборе данных отсутствуют поля, на которые ссылается шаблон.
- **Неправильное использование форматировщика**: Параметры форматировщика некорректны или используются неподдерживаемые типы форматирования.

**Решения**:

- **Проверьте плейсхолдеры**: Убедитесь, что имена плейсхолдеров в шаблоне соответствуют именам полей в наборе данных и имеют правильный синтаксис.
- **Проверьте набор данных**: Убедитесь, что набор данных содержит все поля, на которые ссылается шаблон, и что форматы данных соответствуют требованиям.
- **Настройте форматировщики**: Проверьте методы использования форматировщика, убедитесь в правильности параметров и используйте поддерживаемые типы форматирования.

**Пример**:

**Некорректный шаблон**:
```
Идентификатор заказа：{d.orderId}
Дата заказа：{d.orderDate:format('YYYY/MM/DD')}
Общая сумма：{d.totalAmount:format('0.00')}
```

**Набор данных**:
```json
{
  "orderId": "A123456789",
  "orderDate": "2025-01-01T10:00:00Z"
  // Отсутствует поле totalAmount
}
```

**Решение**: Добавьте поле `totalAmount` в набор данных или удалите ссылку на `totalAmount` из шаблона.