Таблица в Python DOCX - PullRequest
       8

Таблица в Python DOCX

0 голосов
/ 08 января 2020

Здесь печатается воскресенье во всех ячейках таблицы

docu = docx.Document()

daylist = ["monday", "tuesday", "wednesday",
           "thursday", "friday", "saturday", "sunday"]

num_of_days = int(input('enter days'))
num_of_lectures = int(input('lecture number'))

timetable = docu.add_table(rows=num_of_days, cols=num_of_lectures)
tablecell = timetable.cell(0, 1)
tablerow = timetable.rows[1]

for day in daylist:
    for tablerow in timetable.rows:
        for tablecell in tablerow.cells:
            tablecell.text = day

docu.save('timetable.docx')

, и если я делаю это, он печатает весь список в каждой ячейке.

docu = docx.Document()

daylist = ["monday", "tuesday", "wednesday",
           "thursday", "friday", "saturday", "sunday"]

num_of_days = int(input('enter days'))
num_of_lectures = int(input('lecture number'))

timetable = docu.add_table(rows=num_of_days, cols=num_of_lectures)
tablecell = timetable.cell(0, 1)
tablerow = timetable.rows[1]

for tablerow in timetable.rows:
    for tablecell in tablerow.cells:
        tablecell.text = (day for day in daylist)

docu.save('timetable.docx')

и я Я пробовал

daylist = ["monday", "tuesday", "wednesday",
           "thursday", "friday", "saturday", "sunday"]

num_of_days = int(input('enter days'))
num_of_lectures = int(input('lecture number'))

timetable = docu.add_table(rows=num_of_days, cols=num_of_lectures)
tablerow = timetable.rows[1]

i = 0
for cells in timetable.rows:
    i += 1
    tablecell = timetable.cell(i, 0)
    cells.text = (day for day in daylist)

docu.save('timetables.docx')

Мне нужна одна строка из списка daylist только в верхней строке. Python Документация docx сложна для понимания.

Ответы [ 2 ]

2 голосов
/ 08 января 2020

Код Python добросовестно выполняет то, о чем вы его просили. Возможно, вы не понимаете, как работает итерация.

Я предполагаю, что вам нужен результат, который выглядит следующим образом:

+--------+---------+-----------+
| Monday | Tuesday | Wednesday |
+--------+---------+-----------+
|        |         |           |
+--------+---------+-----------+
|        |         |           |
+--------+---------+-----------+

Это может быть достигнуто различными способами, но примерно так сделал бы трюк:

cells = table.rows[0].cells
for i in num_of_days:
   cells[i].text = daylist[i]

или, может быть, лучше:

for i, cell in enumerate(table.rows[0].cells):
    cell.text = daylist[i]

немного любопытнее было бы:

for cell, title in zip(table.rows[0].cells, daylist):
    cell.text = title
0 голосов
/ 08 января 2020

import itertools

tablerow = timetable.rows[0]

for (day, cell) in zip(itertools.cycle(daylist), tablerow):
    cell.text = day
...