我有一个包含数据的列表,我想逐行将其写入一列,但我的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()
用于写入的函数是
worksheet.write_column(starting_row, starting_column, data)
。当您使用for row, data in enumerate(all_list):
在all_list
上进行迭代时,您将获得以下迭代:row = 0
,data = ['aaa1','aaa2','aaa3']
row = 1
,data = ['bbb1','bbb2','bbb3']
row = 3
,data = ['ccc1','ccc2','ccc3']
因此,您的起始行将按顺序为0、1、2,并且您正在覆盖您已经编写的内容
您可以使用以下方法展平
all_list
:chain.from_iterable(all_list)
将原始文件展平为['aaa1', 'aaa2', 'aaa3', 'bbb1', 'bbb2', …]
上的迭代器,因此您可以使用单个write_column
来编写所有这些文件这里有几种方法可以给它打点
环路
将行初始化为0,并按每组数据的长度递增
因此,第一组数据将从第0行开始,然后下一组数据将位于该行下方,依此类推
列表理解
您还可以通过使用列表理解来“展平”列表
相关问题 更多 >
编程相关推荐