как пройти по каждой строке в таблице Excel, используя openpyxl - PullRequest
0 голосов
/ 24 марта 2019

Я хотел бы сделать первый столбец каждой строки в таблице Excel в качестве ключа, а остальные значения в этой строке - в качестве его значения, чтобы я мог сохранить их в словаре.Проблема заключается в том, что при циклическом просмотре строк и столбцов все значения строк сохраняются в каждом ключе.

import openpyxl

from openpyxl import load_workbook

file = "test.xlsx"

#load the work book
wb_obj = load_workbook(filename = file)

wsheet = wb_obj['test']

#dictionary to store data
dataDict = {}

value = []

row_count = wsheet.max_row
col_count = wsheet.max_column

# loop to get row and column values
for i in range(2, row_count+1):
    for j in range(i, col_count+1):
        key   = wsheet.cell(row=i, column=1).value
        print (key)
        value.append(wsheet.cell(row=i, column=j).value)
        print (value)

    dataDict[key] = value

#prompt user for input
userInput = input("Please enter an id to find a person's details: ")

print (dataDict.get(int(userInput)))

данные в электронной таблице: enter image description here

Результат, который я ожидаю: {1: ['John', 'Doe', 4567891234, 'johndoe@jd.ca'], 2: ['Wayne' Kane ', 1234567891,' wd@wd.ca ']}

Результат, который я получил: {1: ['Джон', 'Доу', 4567891234, 'johndoe@jd.ca', 'Кейн', 1234567891, 'wd@wd.ca'], 2: [«Джон», «Доу», 4567891234, «johndoe@jd.ca», «Кейн», 1234567891, «wd@wd.ca»]}

1 Ответ

1 голос
/ 24 марта 2019

Openpyxl уже имеет правильный способ перебирать строки, используя worksheet.iter_rows().Вы можете использовать его для распаковки значения первой ячейки в качестве ключа и значений из других ячеек в качестве списка в словаре, повторяя для каждой строки.

from openpyxl import load_workbook

file = "test.xlsx" #load the work book
wb_obj = load_workbook(filename = file)
wsheet = wb_obj['test']
dataDict = {}

for key, *values in wsheet.iter_rows():
    dataDict[key.value] = [v.value for v in values]
...