All streams
Search
Write a publication
Pull to refresh
1
0
Send message

Неудобство слияния документов word и excel заключается еще в том, что если надо добавить в word таблицу имеющую динамический размер, то возникнут трудности. В docxtpl это все решается очень просто, т.к. он построен на шаблонизаторе Jinja2. {%p tag %} - абзацы, {%tr tag %} - строки таблицы, {%tc tag %} - колонки таблицы, {%r tag %} - прогоны (объект run в word), а также циклы, условия, xml и т.д. Тоже использую его для заполнения документов docxtpl, только вместо openpyxl использую pandas. Словари для заполнения формирую так: dict(zip(df.col1, df.col2)). Ну и т.к. заполнять приходится сразу много документов, то делаю как-то так:

def doc_render(tmpl_path: str, tmpl_filename: str, output_path: str, output_filename: str, data_dict: dict) -> None:
    if not os.path.exists(output_path):
        if pathlib.Path(output_path).is_absolute():
            os.mkdirs(output_path)
        else:
            os.mkdirs(pathlib.Path.cwd() / output_path)
    doc = DocxTemplate(pathlib.Path(tmpl_path) / tmpl_filename)
    doc.render(data_dict)
    doc.save(output_path / output_filename)

С временем в дате решаю вопрос таким образом:

df.date_col = pd.to_date(df.date_col).dt.strftime('%d.%m.%Y')

Information

Rating
Does not participate
Registered
Activity

Specialization

Design Engineer / Project Engineer, Chief Project Engineer (CPE)
Lead
Git
Python