How to write a list to xlsx using openpyxl

后端 未结 3 517
失恋的感觉
失恋的感觉 2020-12-06 03:10

I have a list of some values in Python and want to write them into an Excel-Spreadsheet using openpyxl.

So far I tried, where lstStat is a list of integers that need

相关标签:
3条回答
  • 2020-12-06 03:48

    Openpyxl does not allow you to write lists in excel cells, however if you convert the list into a string you can paste it into excel.

    e.g. This would cause an error

    my_list = ['1','2','3'] ws.cell(row=r, column=1).value = my_list

    However this would paste the string of the list into excel

    my_list = ['1','2','3'] new_list = str(my_list) ws.cell(row=r, column=1).value = new_list

    0 讨论(0)
  • 2020-12-06 03:57

    To assign a value to a cell, use =:

    cell.value = statN
    

    You also need to fix your loops. Notice that right now, for each element in lstStat, you are writing the entire range. Besides not being what you intended, it also is less flexible: What happens if lstStat has more or fewer elements?

    What you want to do is just loop over lstStat and increment the row number as you go. Something like

    r = 3
    for statN in lstStat:
        ws.cell(row=r, column=1).value = statN
        r += 1
    

    You could also use Python's enumerate function:

    for i, statN in enumerate(lstStat):
        ws.cell(row=i+3, column=1).value = statN
    

    (Note that A1 is referenced as cell(row=1, column=1) as of OpenPyXL version 2.0.0; in earlier versions, A1 was cell(row=0, column=0).)

    0 讨论(0)
  • 2020-12-06 04:08
    from openpyxl import load_workbook,Workbook
    
    wb=load_workbook('Book1.xlsx')
    ws1=wb.get_sheet_by_name('Sheet1')
    
    shs=wb.get_sheet_names()
    print(type(shs))
    # shs is list
    
    for r in range(0,len(shs)):
        ws1.cell(row=r+1,column=1).value=shs[r]
    
    wb.save('Book1.xlsx')
    
    0 讨论(0)
提交回复
热议问题