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

2024-09-28 19:09:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含数据的列表,我想逐行将其写入一列,但我的excel文件在这样做时如下所示:

enter image description here

我希望它看起来像这样:
enter image description here

以下是我目前的代码:

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

Tags: 文件数据代码import列表dataallexcel
2条回答

用于写入的函数是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来编写所有这些文件

这里有几种方法可以给它打点

环路

将行初始化为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)

列表理解

您还可以通过使用列表理解来“展平”列表

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

相关问题 更多 >