Python: комбинированный вывод в нескольких листах Excel - PullRequest
0 голосов
/ 29 апреля 2020

Я новичок в Python. Я сгенерировал комбинацию из 3 чисел, состоящую из 24 чисел (всего комбинаций 2024). Мое намерение состоит в том, чтобы поместить комбинации в различные листы Excel в одну рабочую книгу. Например, 100 комбинаций на каждом листе. Я получил некоторую ссылку с этого сайта и попытался использовать его. Но все же все комбинации генерируются на одном листе.

import xlsxwriter


workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet()


import itertools as it
combin = it.combinations(range(1,25),3)
count_combin = []
for i in combin:
    count_combin.append(i)



max_row = 100
row_num = 0

for data in count_combin:

    if row_num == max_row:
        worksheet = workbook.add_worksheet()
        row_num = 0

for row, group in enumerate(count_combin):
    for col in range(3):
        worksheet.write (row, col, group[col])
        row_num += 1

workbook.close()

Пожалуйста, просветите меня, что не так в кодировании?

1 Ответ

0 голосов
/ 29 апреля 2020

Это должно помочь (объяснение в комментариях к коду)

import xlsxwriter
import itertools as it
from math import floor

workbook = xlsxwriter.Workbook('test.xlsx')
combin = it.combinations(range(1,25),3)

max_row = 100
lst_combin = list(combin)

for x, c in enumerate(lst_combin):
    # if x is zero or reachs max_row add a new work sheet
    if x % max_row == 0:
        worksheet = workbook.add_worksheet()

    # nx = x unless x is greater than max row ..
    # .. then nx = x  - max rows multiplied by the number of max rows in x
    nx = x
    if x > max_row:
        nx = x - max_row*(floor(x/max_row))

    worksheet.write(nx, 0, c[0])
    worksheet.write(nx, 1, c[1])
    worksheet.write(nx, 2, c[2])

    workbook.close()
...