Строю шаблон условного документа. В таблице с данными для него есть строки, которые могут быть в разном регистре в зависимости от положения в тексте. Т.е. на титульном листе - все заглавные, если начало предложения, то первая заглавная, если в середине текста, то все строчные.
Например вот так:
Образец данные в Excel выглядит вот так:
Код скрипта:
spoilerimport 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 .., чтобы не подбирать формулировки под именительный.
Есть ли более автоматизированный вариант применять регистр?