提问人:Leah Krieger 提问时间:11/9/2023 更新时间:11/10/2023 访问量:38
Python:将列表移动到 Excel 中的行并使用 openpyxl 进行追加
Python: Moving a list to a row in Excel and appending using openpyxl
问:
我尝试将包含列表的行附加到 Excel 电子表格并收到以下错误:ValueError:无法将 [0.894, 0.566, 0.483, 0.27, 0.266, 0.268, 0.269, 0.161, 0.16, 0.157, 0.269, 0.284, 0.272, 0.261, 0.252, 0.227, 0.22, 0.222, 0.225, 0.239, 0.251, 0.257, 0.302, 0.292, 0.272, 0.272, 0.256, 0.224, 0.334] 到 Excel 我通过分别引用每个列表元素来修复代码,如下所示。这可行,但代码非常笨拙。有没有更好的方法(我是 Python 新手)?
new_row = [' ', sa_length, pln[0], pln[1], pln[2], pln[3], pln[4], pln[5], pln[6], pln[7], pln[8], pln[9], pln[10],
pln[11], pln[12], pln[13], pln[14], pln[15], pln[16], pln[17], pln[18], pln[19], pln[20],
pln[21], pln[22], pln[23], pln[24], pln[25], pln[26], pln[27], pln[28],
pln_max, rect[0], rect[1], rect[2], rect[3],
edge1[0], edge1[1], edge1[2], edge1[3], edge1[4], edge1[5], edge1[6],
middle[0], middle[1], middle[2], middle[3], middle[4], middle[5], middle[6],
edge2[0], edge2[1], edge2[2], edge2[3], edge2[4], edge2[5], edge2[6]]
#add a new row to the output excel file
ws_out.append(new_row)
代码成功地将行追加到现有 Excel 文件
答:
0赞
moken
11/10/2023
#1
您似乎正在尝试使用 Openpyxl append 将列表列表添加到工作表中,
即由其他列表组成的列表
listA = [[list1], [list2],[list3]...]
尝试使用 append as 编写该“listA”
ws.append(listA)
将导致出现错误,其中 list 是第一个列表。ValueError: Cannot convert <list> to excel
您的假设我通过单独引用每个列表元素来修复代码是正确的,但您可以使用 for 循环从列表列表中提取每个单独的列表并应用。
由于 Openpyxl 追加的工作方式,每个列表都会添加到下一个未使用的行中。
代码示例(为了清楚起见,我创建了一个称为“listA”的简化列表列表,其中包含三个列表,每个列表包含 7 个项目。
import openpyxl
### List of lists, 3 lists
listA = [[0.302, 0.292, 0.272, 0.272, 0.256, 0.224, 0.334],
[1.302, 1.292, 1.272, 1.272, 1.256, 1.224, 1.334],
[2.302, 2.292, 2.272, 2.272, 2.256, 2.224, 2.334]
]
xlfile = 'foo.xlsx'
wb = openpyxl.load_workbook(xlfile)
ws = wb['Sheet1']
### If I was to run ws.append(listA) here the error would be returned
### ValueError: Cannot convert [0.302, 0.292, 0.272, 0.272, 0.256, 0.224, 0.334] to Excel
### Use for loop to extract each list.
for row_data in listA:
ws.append(row_data) # Append each list individually
wb.save(xlfile)
评论
new_row = [' ', sa_length, *pln[:29], pln_max, *rect[:4], *edge1[:7], *middle[:7], *edge2[:7]]