Как добавить таблицу внутри документа .docx между текстом, используя docxtpl / docx-python? - PullRequest
0 голосов
/ 04 января 2019

Я могу добавить таблицу в конец файла .docx, но у меня есть шаблон .docx, и я не могу добавить таблицу между текстом.

Я использую словарь (контекст) для сохраненияОсновная информация для вставки в .docx, однако мне нужно добавить таблицу с несколькими данными в специальном пространстве (которое отмечено {{variable}}) в файле .docx.Я попытался добавить "table" - переменная в context: context ["tableplace"] = table
Но это было бесполезно

from docxtpl import DocxTemplate
from docx import Document
from docx.styles.style import _TableStyle
from docx.shared import Inches


 class Client:

def __init__(self,name,data,pasport,valid):
    self.name       = name
    self.data       = data
    self.pasport    = pasport
    self.valid      = valid

doc = DocxTemplate("Template2019.docx")
context = { 
            'persons' : "3",    #number of people
            'from' : "11.22.33",    # date 
            'till' : "22.22.33",    # arrival date
            'nights' : "11",        
            'air1' : "Air",             
            'air2' : "Air",             
            'flight' : "My departure",  #flight
            'flight_back' : "My departure",
            'hotel' : "Smth",       
            'number' : "12345",         
            'feed' : "AI",              
            'days' : "12",              
        }
 per = int('3') #number of persons

 records=[]  #List of clients info

 for objs in range(per):
print('Client ', objs+1)
name = input('\tName : ')
data = input('\tData : ')
pasport = input('\tPasport : ')
valid = input('\tValid : ')
records.append(Client(name,data,pasport,valid))
print(objs)

 # add table ------------------
 table = doc.add_table(1, cols=4)
 table.style = 'Table Grid'
 hdr_cells = table.rows[0].cells
 hdr_cells[0].text = 'Name'
 hdr_cells[1].text = 'Data of Birhtday'
 hdr_cells[2].text = 'Pasport'
 hdr_cells[3].text = 'valid until'

 for i in range(per):
     row_cells = table.add_row().cells
     row_cells[0].text = records[i].name
     row_cells[1].text = records[i].data
     row_cells[2].text = records[i].pasport
     row_cells[3].text = records[i].valid

 doc.render(context)
 doc.save("app/try.docx")

Я хочу увидеть таблицу вместо документа, куда я положилзнак

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...