如何将 excel 中的列表逐行写入一列?

How can i write a list of list in excel to only one column row by row?

我有一个包含数据的列表列表,我想将它逐行写入一列,但是当我这样做时我的 excel 文件看起来像这样:

我希望它看起来像这样:

到目前为止,这是我的代码:

import xlsxwriter

all_list = [['aaa1','aaa2','aaa3'],
            ['bbb1','bbb2','bbb3'],
            ['ccc1','ccc2','ccc3']]

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

for row,data in enumerate(all_list):
    worksheet.write_column(row,0,data)
workbook.close()

这里有几种打点的方法。

循环

将行初始化为0,并按每组数据的长度递增。

因此第一组数据将从第 0 行开始,然后下一组数据将在该行下方,依此类推。

import xlsxwriter

all_list = [['aaa1','aaa2','aaa3'],
            ['bbb1','bbb2','bbb3'],
            ['ccc1','ccc2','ccc3']]

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

row = 0
for data in all_list:
    worksheet.write_column(row, 0, data)
    row += len(data)

列表理解

您也可以通过 'flattening' 使用列表理解的列表列表来做到这一点。

import xlsxwriter

all_list = [['aaa1','aaa2','aaa3'],
            ['bbb1','bbb2','bbb3'],
            ['ccc1','ccc2','ccc3']]

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

data = [item for lst in all_list for item in lst]            

worksheet.write_column(0, 0, data)

workbook.close()
------------------

您写的函数是worksheet.write_column(starting_row, starting_column, data)。当您使用 for row, data in enumerate(all_list): 迭代 all_list 时,您将获得迭代:

  • row = 0data = ['aaa1','aaa2','aaa3']
  • row = 1data = ['bbb1','bbb2','bbb3']
  • row = 3data = ['ccc1','ccc2','ccc3']

因此您的起始行将依次为 0、1、2,并且您正在覆盖您已经编写的内容。

你可以用类似的东西来压平你的 all_list

from itertools import chain

worksheet.write_column(0, 0, chain.from_iterable(all_list))

chain.from_iterable(all_list) 会将原始内容展平为 ['aaa1', 'aaa2', 'aaa3', 'bbb1', 'bbb2', …] 上的迭代器,因此您可以用一个 write_column.

来编写它们