Python将二维列表写入Excel时文件为空问题咨询
问题原因及解决办法
核心问题
你构建的person列表是三层嵌套结构:[[[Smith, Johnson, ...]], [[22, 44, ...]]],而xlsxwriter的write_row方法需要接收一维列表来填充一行的单元格。
当执行worksheet.write_row(row_num, 0, data)时,data是[name]或[age](即包含整个姓名/年龄列表的列表),write_row会把外层列表的每个元素(也就是整个姓名列表或年龄列表)当成单个单元格的值。但xlsxwriter无法直接将Python列表对象写入单元格,最终导致Excel中看不到有效内容。
解决办法
有两种修正方式:
方式一:调整person的结构(推荐)
去掉多余的嵌套层,让person直接包含两个一维列表:
name = ['Smith','Johnson','Williams','Brown','Jones','Miller','Davis','Garcia'] age = [22 ,44, 44, 65, 64, 47, 14, 63] person = [name, age] # 仅保留两层结构 print(person) with xlsxwriter.Workbook('fileName.xlsx') as workbook: worksheet = workbook.add_worksheet() for row_num, data in enumerate(person): worksheet.write_row(row_num, 0, data)
方式二:修改写入逻辑
如果要保留原person的结构,在写入时取出内层的一维列表:
name = ['Smith','Johnson','Williams','Brown','Jones','Miller','Davis','Garcia'] age = [22 ,44, 44, 65, 64, 47, 14, 63] person = [[name],[age]] print(person) with xlsxwriter.Workbook('fileName.xlsx') as workbook: worksheet = workbook.add_worksheet() for row_num, data in enumerate(person): worksheet.write_row(row_num, 0, data[0]) # 提取内层列表作为写入数据
内容的提问来源于stack exchange,提问作者nikola jole
相关产品推荐
相关产品推荐

