Добавить числа в таблицу, но не начинать со строки 1, строки столбца 1 - PullRequest
0 голосов
/ 01 октября 2019

Я создаю календарь в Python-Docx и мне нужно добавить числа в таблицу, основываясь на первом дне месяца. Я могу перебрать всю таблицу и добавить нужное количество дней, но у меня проблемы с запуском в любой ячейке, кроме первой.

Я попытался поместить диапазон в ячейки для цикла, например,

for cell in row.cells[2:]:

Но это просто смещает числа в третий столбец.

from docx import Document

document_name = 'table_loop_test.docx'
document = Document('template.docx')

table = document.add_table(cols=7, rows=5)

iterator = 1
max = 28

for row in table.rows:
    for cell in row.cells:
        if iterator <= max:
            cell.text = f'{iterator}'
            iterator += 1

document.save(document_name)

try:
    subprocess.check_output('open ' + document_name, shell=True)
except subprocess.CalledProcessError as exc:
    print(exc.output).decode('utf-8')

Извините, если это вопрос нуба. Любая помощь с благодарностью! Вы, ребята, такие умные.

1 Ответ

0 голосов
/ 01 октября 2019
daysInMonth = 28
firstDay = 3  # Where you want to start the month

for day in range(1, daysInMonth + 1):
  dayIndex = firstDay + day - 1
  rowIndex = dayIndex // 7
  columnIndex = dayIndex % 7
  table.rows[rowIndex].cells[columnIndex].text = str(day)
...