Для форматирования таблицы с переменным количеством строк в библиотеке python-docx и docxtpl, вам потребуется использовать цикл for в шаблоне .docx и передавать данные через контекст шаблона.
Начните с шаблона, содержащего пустую таблицу с двумя столбцами наименования и цены. Вам не нужно создавать ячейки заранее. Просто добавьте нужное количество строк в таблицу, и содержимое заполнится данными из переданного контекста.
Вот пример шаблона с пустой таблицей:
```
{# шаблон.docx #}
{% for item in data %}
{% set name = item[0] %}
{% set price = item[1] %}
|{{ name }}|{{ price }}|
{% endfor %}
```
Здесь мы используем цикл for, чтобы пройти по каждому элементу в переданных данных. Затем мы устанавливаем переменные "name" и "price" со значениями из каждого элемента. Затем мы заполняем таблицу значениями "name" и "price" с помощью переменных Jinja2.
Чтобы использовать этот шаблон и создать документ с данными, вы можете использовать следующий код:
```python
from docxtpl import DocxTemplate
data = [
['наименование1', 'стоимость1'],
['наименование2', 'стоимость2']
]
doc = DocxTemplate("шаблон.docx")
context = {"data": data}
doc.render(context)
doc.save("результат.docx")
```
Здесь мы передаем данные в контекст шаблона как словарь с ключом "data", соответствующим переменной в шаблоне. Затем мы рендерим шаблон с заданным контекстом и сохраняем полученный документ с помощью метода save(). В результате вы получите документ "результат.docx" с заполненной таблицей.
Обратите внимание, что представленный пример предполагает, что вы уже установили библиотеки docxtpl и jinja2. Если вы этого еще не сделали, вы можете установить их с помощью pip:
```
pip install python-docx
pip install docxtpl
pip install jinja2
```