Python docx中的表

问题描述 投票:0回答:1

这里是表格中所有单元格的印刷日

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文档很难理解。

python python-docx
1个回答
0
投票

import itertools

tablerow = timetable.rows[0]

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

0
投票

Python代码正在忠实地执行您要执行的操作。也许您对迭代的工作方式感到困惑。

我假设您想要一个看起来像这样的结果:

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

这可以通过多种方式来完成,但是类似的事情可以解决问题:

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

稍微高一点,短一行,将是:

for cell, title in zip(table.rows[0].cells, daylist):
    cell.text = title
© www.soinside.com 2019 - 2024. All rights reserved.