我怎样才能获得不同细胞范围内的值?

时间:2016-01-06 18:50:38

标签: python excel list cell

我在Python中使用xlwt从某些内容获取一些数据并将其写入xls文件中,但我需要在不同的单元格范围内获取输出。 我有这样的代码: -

 #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()) 

输出(" table.xls&#34):

#Output
    *   A   B   C   D   E

    1   1   2   3   4   5

    2   6   7   8   9   10

    3   2   3   4   5   6

但我想要这样的事情:

# 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

任何人都可以帮助我吗?感谢

1 个答案:

答案 0 :(得分:1)

我认为最简单的解决方案之一是使用itertools模块中的izip_longest,这样:

>>> 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, '', '', '', '', '', '']

现在您可以轻松地将其写入您的Excel文件:

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

我以为你使用的是Python2