Python: печать вывода на нескольких листах Excel

У меня есть 4 списка, каждый из которых имеет 33 значения, и я хочу распечатать комбинацию в Excel. Excel ограничивает количество строк на каждом листе до 1 048 576, а количество комбинаций превышает ограничение листа на 137 345 значений.

Как продолжить печать результата на следующем листе той же книги?

a = [100, 101, 102,...,133]
b = [250, 251, 252,...,283]
c = [300, 301, 302,...,333]
d = [430, 431, 432,...,463]

list_combined = [(p,q,r,s)   for p in a 
                             for q in b 
                             for r in c 
                             for s in d]

import xlsxwriter

workbook = xlsxwriter.Workbook('combined.xlsx')

worksheet = workbook.add_worksheet()

for row, group in enumerate(list_combined):
    for col in range(5):
        worksheet.write (row, col, group[col])
workbook.close()

person user7970547    schedule 02.09.2018    source источник
comment
Когда вы имеете в виду печать списка в Excel, вы имеете в виду запись данных в файл Excel, верно?   -  person    schedule 03.09.2018
comment
Возможный дубликат Python XlsxWriter — запись на многие листы   -  person    schedule 03.09.2018
comment
Также вы упоминаете 4 списка, которые вы не используете, а затем ссылаетесь на переменные с именем list1 и поэтому не показываете их определение. Вы не пропустите кое-что там?   -  person    schedule 03.09.2018
comment
Пожалуйста, просто посмотрите: google.com/search?q=xlswriter +python+запись+несколько+листов   -  person    schedule 03.09.2018
comment
@ J.C.Rocamonde Я хочу напечатать результат, полученный в list_combined, в Excel.   -  person user7970547    schedule 03.09.2018
comment
Я думаю, что либо мой ответ, либо ответ другого пользователя уже решили эту проблему.   -  person    schedule 03.09.2018
comment
Мы говорим вам, как печатать на нескольких листах. То, как вы разделяете свои данные, — это решение, которое вы должны принять обдуманно, а не проблема, которую мы должны решить. SO предназначен для конкретных проблем программирования.   -  person    schedule 03.09.2018
comment
Вы спрашивали: как сбросить данные на несколько листов (один и тот же файл); мы ответили. Теперь данные, которые вы сохраняете, и то, как вы их сохраняете, зависят от того, что вы хотите сделать.   -  person    schedule 03.09.2018


Ответы (2)


Вы можете установить верхний предел и переключиться на новый рабочий лист, как только вы достигнете предела.

Вот пример с более низким пределом, чем предел, поддерживаемый Excel для тестирования:

import xlsxwriter

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

# Simulate a big list
biglist = range(1, 1001)

# Set max_row to your required limit. Zero indexed.
max_row = 100
row_num = 0

for data in biglist:

    # If we hit the upper limit then create and switch to a new worksheet
    # and reset the row counter.
    if row_num == max_row:
        worksheet = workbook.add_worksheet()
        row_num = 0

    worksheet.write(row_num, 0, data)
    row_num += 1

workbook.close()

Выход:

введите здесь описание изображения

person jmcnamara    schedule 03.09.2018
comment
Искал, чтобы получить продукт списков в Excel. - person user7970547; 03.09.2018
comment
Вы спросили: «Как мне продолжить печатать на следующем листе в той же книге?» Пример показывает, как. Просто замените biglist на свой список, а max_row на максимальное значение Excel -1. - person jmcnamara; 03.09.2018

Во-первых, вызовы Python должны помещать круглые скобки сразу после имени. Пробелы не допускаются:

worksheet.write (row, col, group[col]) worksheet.write(row, col, group[col])

Во-вторых, чтобы записать на несколько листов, вам нужно сделать следующее: Пример взят из этого ответа SO

import xlsxwriter
list_name = ["first sheet", "second sheet", "third sheet"]

workbook = xlsxwriter.Workbook(<Your full path>)
for sheet_name in list_name:
    worksheet = workbook.add_worksheet(sheet_name)
    worksheet.write('A1', sheet_name)

workbook.close()

Если вы не хотите передавать листу какое-либо имя, удалите аргумент sheet_name, и будет задано имя по умолчанию.

Чтобы разделить данные на листы, вы можете легко адаптировать код:

for piece in iterable_data_set:
    # consider "piece" a piece of data you want to put into each sheet
    # `piece` must be an nxm matrix that contains dumpable data.
    worksheet = workbook.add_worksheet()
    for i in range(len(piece)):
        for j in range(len(piece[i])):
            worksheet.write(i, j, piece[i][j])

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

person Community    schedule 02.09.2018