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+write+multiple+sheets   -  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 max -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