Search code examples
pythonexcellistcell

How can i get values in different ranges of cells?


I am using xlwt with Python to get some data from something and writing it in an xls file,but I need to get outputs in different ranges of cells. I have code like this:-

 #Here's the code for that :
    import xlwt
    from tempfile import TemporaryFile
    book = xlwt.Workbook()
    sheet1 = book.add_sheet('sheet1')

    a=[1,2,3,4,5]
    b=[6,7,8,9,10]
    c=[2,3,4,5,6]
    data = [a,b,c]
    for row, array in enumerate(data):
        for col, value in enumerate(array):
            sheet1.write(row, col, value)
    name = "table.xls"
    book.save(name)
    book.save(TemporaryFile()) 

Output("table.xls"):

#Output
    *   A   B   C   D   E

    1   1   2   3   4   5

    2   6   7   8   9   10

    3   2   3   4   5   6

But I want something like this:

# I want the values in different ranges of cells

*   A   B   C   D   E    F   G   H   I

1   1       6       2   3    4   5   6

2   2       7

3   3       8

4   4       9

5   5      10

Can anyone help me? thanks


Solution

  • I believe one of the easiest solution is to use izip_longest from itertools module, this way:

    >>> a=[1,2,3,4,5]
    >>> b=[6,7,8,9,10]
    >>> c=[2,3,4,5,6]
    >>> c_ = [[x] for x in c]
    >>> c_
    [[2], [3], [4], [5], [6]]
    >>> data = list(izip_longest(a,[],b,[],*c_, fillvalue=''))
    >>> for i in data:
        l = []
        for j in i:
            l.append(j)
        print l
    
    [1, '', 6, '', 2, 3, 4, 5, 6]
    [2, '', 7, '', '', '', '', '', '']
    [3, '', 8, '', '', '', '', '', '']
    [4, '', 9, '', '', '', '', '', '']
    [5, '', 10, '', '', '', '', '', '']
    

    Now you can easily write it to your excel file:

    for row, array in enumerate(data):
        for col, value in enumerate(array):
            sheet1.write(row, col, value)
    

    I assumed you are using Python2