Python openpyxl-从输入文件读取第三行
输入文件格式已更改。 原始输入文件 更改的输入文件Python openpyxl-从输入文件读取第三行,python,openpyxl,Python,Openpyxl,输入文件格式已更改。 原始输入文件 更改的输入文件 A B C 1 Title 2 Name Color Result 3 Tom Red True 4 Tom Red False 5 Marry Green False 6 Marry Green True 7 Babara Red False 现在,我想读取输入文件的第三行 如何修改下面的代码 import collections from openpyxl impor
A B C
1 Title
2 Name Color Result
3 Tom Red True
4 Tom Red False
5 Marry Green False
6 Marry Green True
7 Babara Red False
现在,我想读取输入文件的第三行
如何修改下面的代码
import collections
from openpyxl import load_workbook
wb1 = load_workbook('test.xlsx')
ws1 = wb1['test']
a_dict = collections.defaultdict(list)
for row in ws1.rows:
a_dict[row[0].value+','+row[1].value].append(str(row[2].value))
wb2 = Workbook(write_only=True)
ws2 = wb2.create_sheet()
for key,value in a_dict.items():
temp = key.split(',')
temp.append(','.join(value))
ws2.append(temp)
wb2.save('new_test.xlsx')
输出文件如下所示
ab结果
汤姆·瑞德对,错
嫁给格林是假,是真
3巴巴拉红假
通过n-1
访问集合中的任何元素,其中n
是列表中的位置(因为我们从0开始在列表中计数)。如果ws\u in.rows
是一个生成器,您必须将其转换为一个列表,也可以使用list(ws\u in.rows)[2]
访问第三行。您可以使用ws.iter\u rows()
控制要读取的行,如果您想从第三行读取,只需设置min\u row=3
,因此我尝试了用于列表中的行(ws\u in.rows)[2]:a_dict[row[1].value+'、'+row[2].value].append(str(row[6].value))
和错误:a_dict[row[1].value+'、'+row[2].value].append(str(row[6].value])TypeError:“Cell”对象不支持索引
OK,所以听起来像ws.in.rows是Cell
对象列表。所以对它调用索引是行不通的。从行中删除[1]
、[2]
和[6]
。好的。。我在代码后面使用'a_dict.item'。所以我不能删除[1]、[2]、[6],但您不再遍历这些行,所以这样做没有意义。您正在遍历第三行中的列。
import collections
from openpyxl import load_workbook
wb1 = load_workbook('test.xlsx')
ws1 = wb1['test']
a_dict = collections.defaultdict(list)
for row in ws1.rows:
a_dict[row[0].value+','+row[1].value].append(str(row[2].value))
wb2 = Workbook(write_only=True)
ws2 = wb2.create_sheet()
for key,value in a_dict.items():
temp = key.split(',')
temp.append(','.join(value))
ws2.append(temp)
wb2.save('new_test.xlsx')