Как автоматизировать отображение данных из двух листов Excel - PullRequest
0 голосов
/ 28 мая 2019

У меня есть два листа Excel.Один лист Excel содержит ответы пользователя (опция, выбранная пользователем a / 1, b / 2, c / 3, d / 4, e / 5) для вопросов / переменных опроса, а другой файл содержит фактическое значение для каждого изэти параметры

. Пример сценария

Файл Excel 1 содержит данные ВЫХОДА, как показано ниже

enter image description here

ExcelФайл 2 содержит данные ВХОДА / СЛОВАРЯ, как показано нижезначения

enter image description here

1 Ответ

2 голосов
/ 28 мая 2019

подход

  • Используйте openpyxl для чтения файла Excel, содержащего сопоставления.
  • Каждое отображение имеет вид [number].[space][label] Например. 1. Мужской, поэтому разбейте строку, используя '. ', чтобы вы получили число и соответствующую метку. Сохраните его в словаре
  • Считать файл, содержащий входы, теперь эти входы будут использоваться в качестве ключей для чтения меток из словарей
  • Заменить исходное значение ячейки на значение словаря
  • Сохранить рабочую книгу. Готово!

Файл, содержащий пользовательские данные (file1.xlsx)

enter image description here

Файл, содержащий сопоставления (file2.xlsx)

enter image description here

код

from openpyxl import Workbook, load_workbook

#########################
#   Creating Mappings   #
#########################


# Opening file containing mappings
filename = 'file2.xlsx'

wb = load_workbook(filename)
first_sheet = wb.get_sheet_names()[0]
worksheet = wb.get_sheet_by_name(first_sheet)

# Dictonaries to store mappings
gender = {}
ethnicity = {}


#here you iterate over the rows in the specific column
for row in range(2,worksheet.max_row + 1):

    # Making a dict for gender
    for column in "A":  #Gender Col
        cell_name = "{}{}".format(column, row)
        try:
            data = worksheet[cell_name].value.split('. ') #Split data into label and number
            if data[0] not in gender:
                gender[data[0]] = data[1]
        except:
            pass

    # Making a dict for Ethnicity
    for column in "B":  #Ethnicity Col
        cell_name = "{}{}".format(column, row)
        try:
            data = worksheet[cell_name].value.split('. ') #Split data into label and number
            if data[0] not in ethnicity:
                ethnicity[data[0]] = data[1]
        except:
            pass





#########################
#   Replacing Inputs    #
#########################

# Loading file containing User Input
filename = 'file1.xlsx'

wb = load_workbook(filename)
first_sheet = wb.get_sheet_names()[0]
worksheet = wb.get_sheet_by_name(first_sheet)



#here you iterate over the rows in the specific column
for row in range(2,worksheet.max_row + 1):

    # Mapping gender input to label
    for column in "A":  #Gendedr Col
        cell_name = "{}{}".format(column, row)
        try:
            worksheet[cell_name].value = gender[str(worksheet[cell_name].value)]
        except Exception as e:
            pass

    # Mapping ethnicity input to label
    for column in "B":  #Ethnicity Col
        cell_name = "{}{}".format(column, row)
        try:
            worksheet[cell_name].value = ethnicity[str(worksheet[cell_name].value)]
        except:
            pass



wb.save(filename)

выход

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...