Avis-HQ
@Avis-HQ
Engineering (subsea), CAD/CAM/CAE, design

Как менять регистр букв в контексте при слиянии через docxtpl + openpyxl?

Строю шаблон условного документа. В таблице с данными для него есть строки, которые могут быть в разном регистре в зависимости от положения в тексте. Т.е. на титульном листе - все заглавные, если начало предложения, то первая заглавная, если в середине текста, то все строчные.
Например вот так:
spoiler
66f52bed05029384840270.png

Образец данные в Excel выглядит вот так:
spoiler
66f52c36b5f45695863848.png

Код скрипта:
spoiler
import openpyxl
from docxtpl import DocxTemplate

template = "Template.docx"
data, page = 'ФО_Data.xlsx','Sheet1'

doc = DocxTemplate(template)
wb = openpyxl.load_workbook(filename=data)
sheet = wb[page]

# collect tags
tags = [sheet.cell(r,1).value for r in range(1, sheet.max_row + 1)]

# save docs for all columns
for c in range(2,sheet.max_column + 1):
    data = [sheet.cell(r,c).value for r in range(1, sheet.max_row + 1)]
    context = dict(zip(tags,data))
    print(context)
    doc.render(context)
    doc.save(f'ФО_{context.get("s_name")}.docx')


Если в Word применить стиль или задать формат регистра (Uppercase/Sentence case), то сам тег меняется в соответствии с ним, в связи с чем он, ожидаемо, пропускается при обработке.
Пока решил вопрос через дубликаты тегов в разном регистре. Т.е. прописываю дополнительные строки в Excel, с тегами f_name, F_name, F_NAME и соответствующие им данные. Однако это не очень удобно, потому что хотелось бы ещё внедрить падежи вроде f_name_p, f_name_r .., чтобы не подбирать формулировки под именительный.

Есть ли более автоматизированный вариант применять регистр?
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы